Open In Colab

LICENSING NOTICE¶

Note that all users who use Vital DB, an open biosignal dataset, must agree to the Data Use Agreement below. If you do not agree, please close this window. The Data Use Agreement is available here: https://vitaldb.net/dataset/#h.vcpgs1yemdb5

This is the development version of the project code¶

For the Project Draft submission see the DL4H_Team_24_Project_Draft.ipynb notebook in the project repository.

Project repository¶

The project repository can be found at: https://github.com/abarrie2/cs598-dlh-project

Introduction¶

This project aims to reproduce findings from the paper titled "Predicting intraoperative hypotension using deep learning with waveforms of arterial blood pressure, electroencephalogram, and electrocardiogram: Retrospective study" by Jo Y-Y et al. (2022) [1]. This study introduces a deep learning model that predicts intraoperative hypotension (IOH) events before they occur, utilizing a combination of arterial blood pressure (ABP), electroencephalogram (EEG), and electrocardiogram (ECG) signals.

Background of the Problem¶

Intraoperative hypotension (IOH) is a common and significant surgical complication defined by a mean arterial pressure drop below 65 mmHg. It is associated with increased risks of myocardial infarction, acute kidney injury, and heightened postoperative mortality. Effective prediction and timely intervention can substantially enhance patient outcomes.

Evolution of IOH Prediction¶

Initial attempts to predict IOH primarily used arterial blood pressure (ABP) waveforms. A foundational study by Hatib F et al. (2018) titled "Machine-learning Algorithm to Predict Hypotension Based on High-fidelity Arterial Pressure Waveform Analysis" [2] showed that machine learning could forecast IOH events using ABP with reasonable accuracy. This finding spurred further research into utilizing various physiological signals for IOH prediction.

Subsequent advancements included the development of the Acumen™ hypotension prediction index, which was studied in "AcumenTM hypotension prediction index guidance for prevention and treatment of hypotension in noncardiac surgery: a prospective, single-arm, multicenter trial" by Bao X et al. (2024) [3]. This trial integrated a hypotension prediction index into blood pressure monitoring equipment, demonstrating its effectiveness in reducing the number and duration of IOH events during surgeries. Further study is needed to determine whether this resultant reduction in IOH events transalates into improved postoperative patient outcomes.

Current Study¶

Building on these advancements, the paper by Jo Y-Y et al. (2022) proposes a deep learning approach that enhances prediction accuracy by incorporating EEG and ECG signals along with ABP. This multi-modal method, evaluated over prediction windows of 3, 5, 10, and 15 minutes, aims to provide a comprehensive physiological profile that could predict IOH more accurately and earlier. Their results indicate that the combination of ABP and EEG significantly improves performance metrics such as AUROC and AUPRC, outperforming models that use fewer signals or different combinations.

Our project seeks to reproduce and verify Jo Y-Y et al.'s results to assess whether this integrated approach can indeed improve IOH prediction accuracy, thereby potentially enhancing surgical safety and patient outcomes.

Scope of Reproducibility:¶

The original paper investigated the following hypotheses:

  1. Hypothesis 1: A model using ABP and ECG will outperform a model using ABP alone in predicting IOH.
  2. Hypothesis 2: A model using ABP and EEG will outperform a model using ABP alone in predicting IOH.
  3. Hypothesis 3: A model using ABP, EEG, and ECG will outperform a model using ABP alone in predicting IOH.

Results were compared using AUROC and AUPRC scores. Based on the results described in the original paper, we expect that Hypothesis 2 will be confirmed, and that Hypotheses 1 and 3 will not be confirmed.

In order to perform the corresponding experiments, we will implement a CNN-based model that can be configured to train and infer using the following four model variations:

  1. ABP data alone
  2. ABP and ECG data
  3. ABP and EEG data
  4. ABP, ECG, and EEG data

We will measure the performance of these configurations using the same AUROC and AUPRC metrics as used in the original paper. To test hypothesis 1 we will compare the AUROC and AUPRC measures between model variation 1 and model variation 2. To test hypothesis 2 we will compare the AUROC and AUPRC measures between model variation 1 and model variation 3. To test hypothesis 3 we will compare the AUROC and AUPRC measures between model variation 1 and model variation 4. For all of the above measures and experiment combinations, we will operate multiple experiments where the time-to-IOH event prediction will use the following prediction windows:

  1. 3 minutes before event
  2. 5 minutes before event
  3. 10 minutes before event
  4. 15 minutes before event

In the event that we are compute-bound, we will prioritize the 3-minute prediction window experiments as they are the most relevant to the original paper's findings.

The predictive power of ABP, ECG and ABP + ECG models at 3-, 5-, 10- and 15-minute prediction windows: Predictive power of ABP, ECG and ABP + ECG models at 3-, 5-, 10- and 15-minute prediction windows

Modifications made for demo mode¶

In order to demonstrate the functioning of the code in a short (ie, <8 minute limit) the following options and modifications were used:

  1. MAX_CASES was set to 20. The total number of cases to be used in the full training set is 3296, but the smaller numbers allows demonstration of each section of the pipeline.
  2. vitaldb_cache is prepopulated in Google Colab. The cache file is approx. 800MB and contains the raw and mini-fied copies of the source dataset and is downloaded from Google Drive. This is much faster than using the vitaldb API, but is again only a fraction of the data. The full dataset can be downloaded with the API or prepopulated by following the instructions in the "Bulk Data Download" section below.
  3. max_epochs is set to 6. With the small dataset, training is fast and shows the decreasing training and validation losses. In the full model run, max_epochs will be set to 100. In both cases early stopping is enabled and will stop training if the validation losses stop decreasing for five consecutive epochs.
  4. Only the "ABP + EEG" combination will be run. In the final report, additional combinations will be run, as discussed later.
  5. Only the 3-minute prediction window will be run. In the final report, additional prediction windows (5, 10 and 15 minutes) will be run, as discussed later.
  6. No ablations are run in the demo. These will be completed for the final report.

Methodology¶

Methodology from Final Rubrik¶

  • Environment
    • Python version
    • Dependencies/packages needed
  • Data
    • Data download instruction
    • Data descriptions with helpful charts and visualizations
    • Preprocessing code + command
  • Model
    • Citation to the original paper
    • Link to the original paper’s repo (if applicable)
    • Model descriptions
    • Implementation code
    • Pretrained model (if applicable)
  • Training
    • Hyperparams
      • Report at least 3 types of hyperparameters such as learning rate, batch size, hidden size, dropout
    • Computational requirements
      • Report at least 3 types of requirements such as type of hardware, average runtime for each epoch, total number of trials, GPU hrs used, # training epochs
      • Training code
  • Evaluation
    • Metrics descriptions
    • Evaluation code

The methodology section is composed of the following subsections: Environment, Data and Model.

  • Environment: This section describes the setup of the environment, including the installation of necessary libraries and the configuration of the runtime environment.
  • Data: This section describes the dataset used in the study, including its collection and preprocessing.
    • Data Collection: This section describes the process of downloading the dataset from VitalDB and populating the local data cache.
    • Data Preprocessing: This section describes the preprocessing steps applied to the dataset, including data selection, data cleaning, and feature extraction.
  • Model: This section describes the deep learning model used in the study, including its implementation, training, and evaluation.
    • Model Implementation: This section describes the implementation of the deep learning model, including the architecture, loss function, and optimization algorithm.
    • Model Training: This section describes the training process, including the training loop, hyperparameters, and training strategy.
    • Model Evaluation: This section describes the evaluation process, including the metrics used, the evaluation strategy, and the results obtained.

Environment¶

Create environment¶

The environment setup differs based on whether you are running the code on a local machine or on Google Colab. The following sections provide instructions for setting up the environment in each case.

Local machine¶

Create conda environment for the project using the environment.yml file:

conda env create --prefix .envs/dlh-team24 -f environment.yml

Activate the environment with:

conda activate .envs/dlh-team24

Google Colab¶

The following code snippet installs the required packages and downloads the necessary files in a Google Colab environment:

In [1]:
# Google Colab environments have a `/content` directory. Use this as a proxy for running Colab-only code
COLAB_ENV = "google.colab" in str(get_ipython())
if COLAB_ENV:
    #install vitaldb
    %pip install vitaldb

    # Executing in Colab therefore download cached preprocessed data.
    # TODO: Integrate this with the setup local cache data section below.
    # Check for file existence before overwriting.
    import gdown
    gdown.download(id="15b5Nfhgj3McSO2GmkVUKkhSSxQXX14hJ", output="vitaldb_cache.tgz")
    !tar -zxf vitaldb_cache.tgz

    # Download sqi_filter.csv from github repo
    !wget https://raw.githubusercontent.com/abarrie2/cs598-dlh-project/main/sqi_filter.csv

All other required packages are already installed in the Google Colab environment.

Load environment¶

In [2]:
# Import packages
import os
import random
import sys
import uuid
import copy
from collections import defaultdict

from timeit import default_timer as timer

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.manifold import TSNE
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report, roc_auc_score, precision_recall_curve, auc, confusion_matrix
from sklearn.metrics import RocCurveDisplay, PrecisionRecallDisplay, average_precision_score
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
import torch
from torch.utils.data import Dataset
import vitaldb
import h5py

import torch.nn as nn
import torch.nn.functional as F
from tqdm import tqdm
from datetime import datetime

Set random seeds to generate consistent results:

In [3]:
RANDOM_SEED = 42

def reset_random_state():
    random.seed(RANDOM_SEED)
    np.random.seed(RANDOM_SEED)
    torch.manual_seed(RANDOM_SEED)
    if torch.cuda.is_available():
        torch.cuda.manual_seed(RANDOM_SEED)
        torch.cuda.manual_seed_all(RANDOM_SEED)
        torch.backends.cudnn.deterministic = True
        torch.backends.cudnn.benchmark = False
    os.environ["PYTHONHASHSEED"] = str(RANDOM_SEED)
    
reset_random_state()

Set device to GPU or MPS if available

In [4]:
device = torch.device("cuda" if torch.cuda.is_available() else "mps" if (torch.backends.mps.is_available() and torch.backends.mps.is_built()) else "cpu")
print(f"Using device: {device}")
Using device: mps

Define class to print to console and simultaneously save to file:

In [5]:
class ForkedStdout:
    def __init__(self, file_path):
        self.file = open(file_path, 'w')
        self.stdout = sys.stdout

    def write(self, message):
        self.stdout.write(message)
        self.file.write(message)

    def flush(self):
        self.stdout.flush()
        self.file.flush()

    def __enter__(self):
        sys.stdout = self

    def __exit__(self, exc_type, exc_val, exc_tb):
        sys.stdout = self.stdout
        self.file.close()

Data¶

Data Description¶

Source¶

Data for this project is sourced from the open biosignal VitalDB dataset as described in "VitalDB, a high-fidelity multi-parameter vital signs database in surgical patients" by Lee H-C et al. (2022) [4], which contains perioperative vital signs and numerical data from 6,388 cases of non-cardiac (general, thoracic, urological, and gynecological) surgery patients who underwent routine or emergency surgery at Seoul National University Hospital between 2016 and 2017. The dataset includes ABP, ECG, and EEG signals, as well as other physiological data. The dataset is available through an API and Python library, and at PhysioNet: https://physionet.org/content/vitaldb/1.0.0/

Statistics¶

Characteristics of the dataset: | Characteristic | Value | Details | |-----------------------|-----------------------------|------------------------| | Total number of cases | 6,388 | | | Sex (male) | 3,243 (50.8%) | | | Age (years) | 59 | Range: 48-68 | | Height (cm) | 162 | Range: 156-169 | | Weight (kg) | 61 | Range: 53-69 | | Tram-Rac 4A tracks | 6,355 (99.5%) | Sampling rate: 500Hz | | BIS Vista tracks | 5,566 (87.1%) | Sampling rate: 128Hz | | Case duration (min) | 189 | Range: 27-1041 |

Labels are only known after processing the data. In the original paper, there were an average of 1.6 IOH events per case and 5.7 non-events per case so we expect approximately 10,221 IOH events and 364,116 non-events in the dataset.

Data Processing¶

Data will be processed as follows:

  1. Load the dataset from VitalDB, or from a local cache if previously downloaded.
  2. Apply the inclusion and exclusion selection criteria to filter the dataset according to surgery metadata.
  3. Generate a minified dataset by discarding all tracks except ABP, ECG, and EEG.
  4. Preprocess the data by applying band-pass and z-score normalization to the ECG and EEG signals, and filtering out ABP signals below a Signal Quality Index (SQI) threshold.
  5. Generate event and non-event samples by extracting 60-second segments around IOH events and non-events.
  6. Split the dataset into training, validation, and test sets with a 6:1:3 ratio, ensuring that samples from a single case are not split across different sets to avoid data leakage.

Set Up Local Data Caches¶

VitalDB data is static, so local copies can be stored and reused to avoid expensive downloads and to speed up data processing.

The default directory defined below is in the project .gitignore file. If this is modified, the new directory should also be added to the project .gitignore.

In [6]:
VITALDB_CACHE = './vitaldb_cache'
VITAL_ALL = f"{VITALDB_CACHE}/vital_all"
VITAL_MINI = f"{VITALDB_CACHE}/vital_mini"
VITAL_METADATA = f"{VITALDB_CACHE}/metadata"
VITAL_MODELS = f"{VITALDB_CACHE}/models"
VITAL_RUNS = f"{VITALDB_CACHE}/runs"
VITAL_PREPROCESS_SCRATCH = f"{VITALDB_CACHE}/data_scratch"
VITAL_EXTRACTED_SEGMENTS = f"{VITALDB_CACHE}/segments"
In [7]:
TRACK_CACHE = None
SEGMENT_CACHE = None

# when USE_MEMORY_CACHING is enabled, track data will be persisted in an in-memory cache. Not useful once we have already pre-extracted all event segments
# DON'T USE: Stores items in memory that are later not used. Causes OOM on segment extraction.
USE_MEMORY_CACHING = False

# When RESET_CACHE is set to True, it will ensure the TRACK_CACHE is disposed and recreated when we do dataset initialization.
# Use as a shortcut to wiping cache rather than restarting kernel
RESET_CACHE = False

PREDICTION_WINDOW = 3
#PREDICTION_WINDOW = 'ALL'

ALL_PREDICTION_WINDOWS = [3, 5, 10, 15]

# Maximum number of cases of interest for which to download data.
# Set to a small value (ex: 20) for demo purposes, else set to None to disable and download and process all.
MAX_CASES = None
#MAX_CASES = 300

# Preloading Cases: when true, all matched cases will have the _mini tracks extracted and put into in-mem dict
PRELOADING_CASES = False
PRELOADING_SEGMENTS = True
# Perform Data Preprocessing: do we want to take the raw vital file and extract segments of interest for training?
PERFORM_DATA_PREPROCESSING = False
In [8]:
if not os.path.exists(VITALDB_CACHE):
  os.mkdir(VITALDB_CACHE)
if not os.path.exists(VITAL_ALL):
  os.mkdir(VITAL_ALL)
if not os.path.exists(VITAL_MINI):
  os.mkdir(VITAL_MINI)
if not os.path.exists(VITAL_METADATA):
  os.mkdir(VITAL_METADATA)
if not os.path.exists(VITAL_MODELS):
  os.mkdir(VITAL_MODELS)
if not os.path.exists(VITAL_RUNS):
  os.mkdir(VITAL_RUNS)
if not os.path.exists(VITAL_PREPROCESS_SCRATCH):
  os.mkdir(VITAL_PREPROCESS_SCRATCH)
if not os.path.exists(VITAL_EXTRACTED_SEGMENTS):
  os.mkdir(VITAL_EXTRACTED_SEGMENTS)

print(os.listdir(VITALDB_CACHE))
['segments_filter_neg', 'segments_bak', 'runs_old', '.DS_Store', 'Unconfirmed 744573.crdownload', 'segments_filter_neg_pos', 'vital_mini_bak_0501', 'vital_all', 'segments_sizes_sp.txt', 'models_all_cases_baseline', 'models', 'docs', 'vital_mini.tar', 'data_scratch', 'segments_md5_sp.txt', 'vital_file_md5_mw.txt', 'segments_bak_0501', 'osfs', 'vital_mini', 'segments_filter_none', 'vital_file_mini_md5_sp.txt', 'vital_file_mini_file_sizes_sp.txt', 'runs', 'metadata', 'segments', 'models_old', 'vital_file_md5_sp.txt']

Bulk Data Download¶

This step is not required, but will significantly speed up downstream processing and avoid a high volume of API requests to the VitalDB web site.

The cache population code checks if the .vital files are locally available, and can be populated by calling the vitaldb API or by manually prepopulating the cache (recommended)

  • Manually downloaded the dataset from the following site: https://physionet.org/content/vitaldb/1.0.0/
    • Download the zip file in a browser, or
    • Use wget -r -N -c -np https://physionet.org/files/vitaldb/1.0.0/ to download the files in a terminal
  • Move the contents of vital_files into the ${VITAL_ALL} directory.
In [9]:
# Returns the Pandas DataFrame for the specified dataset.
#   One of 'cases', 'labs', or 'trks'
# If the file exists locally, create and return the DataFrame.
# Else, download and cache the csv first, then return the DataFrame.
def vitaldb_dataframe_loader(dataset_name):
    if dataset_name not in ['cases', 'labs', 'trks']:
        raise ValueError(f'Invalid dataset name: {dataset_name}')
    file_path = f'{VITAL_METADATA}/{dataset_name}.csv'
    if os.path.isfile(file_path):
        print(f'{dataset_name}.csv exists locally.')
        df = pd.read_csv(file_path)
        return df
    else:
        print(f'downloading {dataset_name} and storing in the local cache for future reuse.')
        df = pd.read_csv(f'https://api.vitaldb.net/{dataset_name}')
        df.to_csv(file_path, index=False)
        return df

Exploratory Data Analysis¶

Cases¶

In [10]:
cases = vitaldb_dataframe_loader('cases')
cases = cases.set_index('caseid')
cases.shape
cases.csv exists locally.
Out[10]:
(6388, 73)
In [11]:
cases.index.nunique()
Out[11]:
6388
In [12]:
cases.head()
Out[12]:
subjectid casestart caseend anestart aneend opstart opend adm dis icu_days ... intraop_colloid intraop_ppf intraop_mdz intraop_ftn intraop_rocu intraop_vecu intraop_eph intraop_phe intraop_epi intraop_ca
caseid
1 5955 0 11542 -552 10848.0 1668 10368 -236220 627780 0 ... 0 120 0.0 100 70 0 10 0 0 0
2 2487 0 15741 -1039 14921.0 1721 14621 -221160 1506840 0 ... 0 150 0.0 0 100 0 20 0 0 0
3 2861 0 4394 -590 4210.0 1090 3010 -218640 40560 0 ... 0 0 0.0 0 50 0 0 0 0 0
4 1903 0 20990 -778 20222.0 2522 17822 -201120 576480 1 ... 0 80 0.0 100 100 0 50 0 0 0
5 4416 0 21531 -1009 22391.0 2591 20291 -67560 3734040 13 ... 0 0 0.0 0 160 0 10 900 0 2100

5 rows × 73 columns

In [13]:
cases['sex'].value_counts()
Out[13]:
sex
M    3243
F    3145
Name: count, dtype: int64

Tracks¶

In [14]:
trks = vitaldb_dataframe_loader('trks')
trks = trks.set_index('caseid')
trks.shape
trks.csv exists locally.
Out[14]:
(486449, 2)
In [15]:
trks.index.nunique()
Out[15]:
6388
In [16]:
trks.groupby('caseid')[['tid']].count().plot();
In [17]:
trks.groupby('caseid')[['tid']].count().hist();
In [18]:
trks.groupby('tname').count().sort_values(by='tid', ascending=False)
Out[18]:
tid
tname
Solar8000/HR 6387
Solar8000/PLETH_SPO2 6386
Solar8000/PLETH_HR 6386
Primus/CO2 6362
Primus/PAMB_MBAR 6361
... ...
Orchestra/AMD_VOL 1
Solar8000/ST_V5 1
Orchestra/NPS_VOL 1
Orchestra/AMD_RATE 1
Orchestra/VEC_VOL 1

196 rows × 1 columns

Parameters of Interest¶

Hemodynamic Parameters Reference¶

https://vitaldb.net/dataset/?query=overview#h.f7d712ycdpk2

SNUADC/ART

arterial blood pressure waveform

Parameter, Description, Type/Hz, Unit

SNUADC/ART, Arterial pressure wave, W/500, mmHg

In [19]:
trks[trks['tname'].str.contains('SNUADC/ART')].shape
Out[19]:
(3645, 2)

SNUADC/ECG_II

electrocardiogram waveform

Parameter, Description, Type/Hz, Unit

SNUADC/ECG_II, ECG lead II wave, W/500, mV

In [20]:
trks[trks['tname'].str.contains('SNUADC/ECG_II')].shape
Out[20]:
(6355, 2)

BIS/EEG1_WAV

electroencephalogram waveform

Parameter, Description, Type/Hz, Unit

BIS/EEG1_WAV, EEG wave from channel 1, W/128, uV

In [21]:
trks[trks['tname'].str.contains('BIS/EEG1_WAV')].shape
Out[21]:
(5871, 2)

Cases of Interest¶

These are the subset of case ids for which modelling and analysis will be performed based upon inclusion criteria and waveform data availability.

In [22]:
# TRACK NAMES is used for metadata analysis via API
TRACK_NAMES = ['SNUADC/ART', 'SNUADC/ECG_II', 'BIS/EEG1_WAV']
TRACK_SRATES = [500, 500, 128]
# EXTRACTION TRACK NAMES adds the EVENT track which is only used when doing actual file i/o
EXTRACTION_TRACK_NAMES = ['SNUADC/ART', 'SNUADC/ECG_II', 'BIS/EEG1_WAV', 'EVENT']
EXTRACTION_TRACK_SRATES = [500, 500, 128, 1]
In [23]:
# As in the paper, select cases which meet the following criteria:
#
# For patients, the inclusion criteria were as follows:
# (1) adults (age >= 18)
# (2) administered general anaesthesia
# (3) undergone non-cardiac surgery. 
#
# For waveform data, the inclusion criteria were as follows:
# (1) no missing monitoring for ABP, ECG, and EEG waveforms
# (2) no cases containing false events or non-events due to poor signal quality
#     (checked in second stage of data preprocessing)

# Adult
inclusion_1 = cases.loc[cases['age'] >= 18].index
print(f'{len(cases)-len(inclusion_1)} cases excluded, {len(inclusion_1)} remaining due to age criteria')

# General Anesthesia
inclusion_2 = cases.loc[cases['ane_type'] == 'General'].index
print(f'{len(cases)-len(inclusion_2)} cases excluded, {len(inclusion_2)} remaining due to anesthesia criteria')

# Non-cardiac surgery
inclusion_3 = cases.loc[
    ~cases['opname'].str.contains("cardiac", case=False)
    & ~cases['opname'].str.contains("aneurysmal", case=False)
].index
print(f'{len(cases)-len(inclusion_3)} cases excluded, {len(inclusion_3)} remaining due to non-cardiac surgery criteria')

# ABP, ECG, EEG waveforms
inclusion_4 = trks.loc[trks['tname'].isin(TRACK_NAMES)].index.value_counts()
inclusion_4 = inclusion_4[inclusion_4 == len(TRACK_NAMES)].index
print(f'{len(cases)-len(inclusion_4)} cases excluded, {len(inclusion_4)} remaining due to missing waveform data')

# SQI filter
# NOTE: this depends on a sqi_filter.csv generated by external processing
inclusion_5 = pd.read_csv('sqi_filter.csv', header=None, names=['caseid','sqi']).set_index('caseid').index
print(f'{len(cases)-len(inclusion_5)} cases excluded, {len(inclusion_5)} remaining due to SQI threshold not being met')

# Only include cases with known good waveforms.
exclusion_6 = pd.read_csv('malformed_tracks_filter.csv', header=None, names=['caseid']).set_index('caseid').index
inclusion_6 = cases.index.difference(exclusion_6)
print(f'{len(cases)-len(inclusion_6)} cases excluded, {len(inclusion_6)} remaining due to malformed waveforms')

cases_of_interest_idx = inclusion_1 \
    .intersection(inclusion_2) \
    .intersection(inclusion_3) \
    .intersection(inclusion_4) \
    .intersection(inclusion_5) \
    .intersection(inclusion_6)

cases_of_interest = cases.loc[cases_of_interest_idx]

print()
print(f'{cases_of_interest_idx.shape[0]} out of {cases.shape[0]} total cases remaining after exclusions applied')

# Trim cases of interest to MAX_CASES
if MAX_CASES:
    cases_of_interest_idx = cases_of_interest_idx[:MAX_CASES]
print(f'{cases_of_interest_idx.shape[0]} cases of interest selected')
57 cases excluded, 6331 remaining due to age criteria
345 cases excluded, 6043 remaining due to anesthesia criteria
14 cases excluded, 6374 remaining due to non-cardiac surgery criteria
3019 cases excluded, 3369 remaining due to missing waveform data
0 cases excluded, 6388 remaining due to SQI threshold not being met
533 cases excluded, 5855 remaining due to malformed waveforms

2763 out of 6388 total cases remaining after exclusions applied
2763 cases of interest selected
In [24]:
cases_of_interest.head(n=5)
Out[24]:
subjectid casestart caseend anestart aneend opstart opend adm dis icu_days ... intraop_colloid intraop_ppf intraop_mdz intraop_ftn intraop_rocu intraop_vecu intraop_eph intraop_phe intraop_epi intraop_ca
caseid
1 5955 0 11542 -552 10848.0 1668 10368 -236220 627780 0 ... 0 120 0.0 100 70 0 10 0 0 0
4 1903 0 20990 -778 20222.0 2522 17822 -201120 576480 1 ... 0 80 0.0 100 100 0 50 0 0 0
7 5124 0 15770 477 14817.0 3177 14577 -154320 623280 3 ... 0 0 0.0 0 120 0 0 0 0 0
10 2175 0 20992 -1743 21057.0 2457 19857 -220740 3580860 1 ... 0 90 0.0 0 110 0 20 500 0 600
12 491 0 31203 -220 31460.0 5360 30860 -208500 1519500 4 ... 200 100 0.0 100 70 0 20 0 0 3300

5 rows × 73 columns

Tracks of Interest¶

These are the subset of tracks (waveforms) for the cases of interest identified above.

In [25]:
# A single case maps to one or more waveform tracks. Select only the tracks required for analysis.
trks_of_interest = trks.loc[cases_of_interest_idx][trks.loc[cases_of_interest_idx]['tname'].isin(TRACK_NAMES)]
trks_of_interest.shape
Out[25]:
(8289, 2)
In [26]:
trks_of_interest.head(n=5)
Out[26]:
tname tid
caseid
1 BIS/EEG1_WAV 0aa685df768489a18a5e9f53af0d83bf60890c73
1 SNUADC/ART 724cdd7184d7886b8f7de091c5b135bd01949959
1 SNUADC/ECG_II 8c9161aaae8cb578e2aa7b60f44234d98d2b3344
4 BIS/EEG1_WAV 1b4c2379be3397a79d3787dd810190150dc53f27
4 SNUADC/ART e28777c4706fe3a5e714bf2d91821d22d782d802
In [27]:
trks_of_interest_idx = trks_of_interest.set_index('tid').index
trks_of_interest_idx.shape
Out[27]:
(8289,)

Build Tracks Cache for Local Processing¶

Tracks data are large and therefore expensive to download every time used. By default, the .vital file format stores all tracks for each case internally. Since only select tracks per case are required, each .vital file can be further reduced by discarding the unused tracks.

In [28]:
# Ensure the full vital file dataset is available for cases of interest.
count_downloaded = 0
count_present = 0

#for i, idx in enumerate(cases.index):
for idx in cases_of_interest_idx:
    full_path = f'{VITAL_ALL}/{idx:04d}.vital'
    if not os.path.isfile(full_path):
        print(f'Missing vital file: {full_path}')
        # Download and save the file.
        vf = vitaldb.VitalFile(idx)
        vf.to_vital(full_path)
        count_downloaded += 1
    else:
        count_present += 1

print()
print(f'Count of cases of interest:           {cases_of_interest_idx.shape[0]}')
print(f'Count of vital files downloaded:      {count_downloaded}')
print(f'Count of vital files already present: {count_present}')
Count of cases of interest:           2763
Count of vital files downloaded:      0
Count of vital files already present: 2763

Validate Mini Files¶

In [29]:
# Convert vital files to "mini" versions including only the subset of tracks defined in TRACK_NAMES above.
# Only perform conversion for the cases of interest.
# NOTE: If this cell is interrupted, it can be restarted and will continue where it left off.
count_minified = 0
count_present = 0
count_missing_tracks = 0
count_not_fixable = 0

# If set to true, local mini files are checked for all tracks even if the mini file is already present.
FORCE_VALIDATE = False

for idx in cases_of_interest_idx:
    full_path = f'{VITAL_ALL}/{idx:04d}.vital'
    mini_path = f'{VITAL_MINI}/{idx:04d}_mini.vital'

    if FORCE_VALIDATE or not os.path.isfile(mini_path):
        print(f'Creating mini vital file: {idx}')
        vf = vitaldb.VitalFile(full_path, EXTRACTION_TRACK_NAMES)
        
        if len(vf.get_track_names()) != 4:
            print(f'Missing track in vital file: {idx}, {set(EXTRACTION_TRACK_NAMES).difference(set(vf.get_track_names()))}')
            count_missing_tracks += 1
            
            # Attempt to download from VitalDB directly and see if missing tracks are present.
            vf = vitaldb.VitalFile(idx, EXTRACTION_TRACK_NAMES)
            
            if len(vf.get_track_names()) != 4:
                print(f'Unable to fix missing tracks: {idx}')
                count_not_fixable += 1
                continue
                
            if vf.get_track_samples(EXTRACTION_TRACK_NAMES[0], 1/EXTRACTION_TRACK_SRATES[0]).shape[0] == 0:
                print(f'Empty track: {idx}, {EXTRACTION_TRACK_NAMES[0]}')
                count_not_fixable += 1
                continue
                
            if vf.get_track_samples(EXTRACTION_TRACK_NAMES[1], 1/EXTRACTION_TRACK_SRATES[1]).shape[0] == 0:
                print(f'Empty track: {idx}, {EXTRACTION_TRACK_NAMES[1]}')
                count_not_fixable += 1
                continue
                
            if vf.get_track_samples(EXTRACTION_TRACK_NAMES[2], 1/EXTRACTION_TRACK_SRATES[2]).shape[0] == 0:
                print(f'Empty track: {idx}, {EXTRACTION_TRACK_NAMES[2]}')
                count_not_fixable += 1
                continue

            if vf.get_track_samples(EXTRACTION_TRACK_NAMES[3], 1/EXTRACTION_TRACK_SRATES[3]).shape[0] == 0:
                print(f'Empty track: {idx}, {EXTRACTION_TRACK_NAMES[3]}')
                count_not_fixable += 1
                continue

        vf.to_vital(mini_path)
        count_minified += 1
    else:
        count_present += 1

print()
print(f'Count of cases of interest:           {cases_of_interest_idx.shape[0]}')
print(f'Count of vital files minified:        {count_minified}')
print(f'Count of vital files already present: {count_present}')
print(f'Count of vital files missing tracks:  {count_missing_tracks}')
print(f'Count of vital files not fixable:     {count_not_fixable}')
Count of cases of interest:           2763
Count of vital files minified:        0
Count of vital files already present: 2763
Count of vital files missing tracks:  0
Count of vital files not fixable:     0

Filtering¶

Preprocessing characteristics are different for each of the three signal categories:

  • ABP: no preprocessing, use as-is
  • ECG: apply a 1-40Hz bandpass filter, then perform Z-score normalization
  • EEG: apply a 0.5-50Hz bandpass filter

apply_bandpass_filter() implements the bandpass filter using scipy.signal

apply_zscore_normalization() implements the Z-score normalization using numpy

In [30]:
from scipy.signal import butter, lfilter, spectrogram

# define two methods for data preprocessing

def apply_bandpass_filter(data, lowcut, highcut, fs, order=5):
    b, a = butter(order, [lowcut, highcut], fs=fs, btype='band')
    y = lfilter(b, a, np.nan_to_num(data))
    return y

def apply_zscore_normalization(signal):
    mean = np.nanmean(signal)
    std = np.nanstd(signal)
    return (signal - mean) / std
In [31]:
# Filtering Demonstration

# temp experimental, code to be incorporated into overall preloader process
# for now it's just dumping example plots of the before/after filtered signal data
caseidx = 1
file_path = f"{VITAL_MINI}/{caseidx:04d}_mini.vital"
vf = vitaldb.VitalFile(file_path, TRACK_NAMES)

originalAbp = None
filteredAbp = None
originalEcg = None
filteredEcg = None
originalEeg = None
filteredEeg = None

ABP_TRACK_NAME = "SNUADC/ART"
ECG_TRACK_NAME = "SNUADC/ECG_II"
EEG_TRACK_NAME = "BIS/EEG1_WAV"

for i, (track_name, rate) in enumerate(zip(TRACK_NAMES, TRACK_SRATES)):
    # Get samples for this track
    track_samples = vf.get_track_samples(track_name, 1/rate)
    #track_samples, _ = vf.get_samples(track_name, 1/rate)
    print(f"Track {track_name} @ {rate}Hz shape {len(track_samples)}")

    if track_name == ABP_TRACK_NAME:
        # ABP waveforms are used without further pre-processing
        originalAbp = track_samples
        filteredAbp = track_samples
    elif track_name == ECG_TRACK_NAME:
        originalEcg = track_samples
        # ECG waveforms are band-pass filtered between 1 and 40 Hz, and Z-score normalized
        # first apply bandpass filter
        filteredEcg = apply_bandpass_filter(track_samples, 1, 40, rate)
        # then do z-score normalization
        filteredEcg = apply_zscore_normalization(filteredEcg)
    elif track_name == EEG_TRACK_NAME:
        # EEG waveforms are band-pass filtered between 0.5 and 50 Hz
        originalEeg = track_samples
        filteredEeg = apply_bandpass_filter(track_samples, 0.5, 50, rate, 2)

def plotSignal(data, title):
    plt.figure(figsize=(20, 5))
    plt.plot(data)
    plt.title(title)
    plt.show()

plotSignal(originalAbp, "Original ABP")
plotSignal(originalAbp, "Unfiltered ABP")
plotSignal(originalEcg, "Original ECG")
plotSignal(filteredEcg, "Filtered ECG")
plotSignal(originalEeg, "Original EEG")
plotSignal(filteredEeg, "Filtered EEG")
Track SNUADC/ART @ 500Hz shape 5771049
Track SNUADC/ECG_II @ 500Hz shape 5771049
Track BIS/EEG1_WAV @ 128Hz shape 1477389
In [32]:
# Preprocess data tracks
ABP_TRACK_NAME = "SNUADC/ART"
ECG_TRACK_NAME = "SNUADC/ECG_II"
EEG_TRACK_NAME = "BIS/EEG1_WAV"
EVENT_TRACK_NAME = "EVENT"
MINI_FILE_FOLDER = VITAL_MINI
CACHE_FILE_FOLDER = VITAL_PREPROCESS_SCRATCH

if RESET_CACHE:
    TRACK_CACHE = None
    SEGMENT_CACHE = None

if TRACK_CACHE is None:
    TRACK_CACHE = {}
    SEGMENT_CACHE = {}

def get_track_data(case, print_when_file_loaded = False):
    parsedFile = None
    abp = None
    eeg = None
    ecg = None
    events = None

    for i, (track_name, rate) in enumerate(zip(EXTRACTION_TRACK_NAMES, EXTRACTION_TRACK_SRATES)):
        # use integer case id and track name, delimited by pipe, as cache key
        cache_label = f"{case}|{track_name}"
        
        if cache_label not in TRACK_CACHE:
            if parsedFile is None:
                file_path = f"{MINI_FILE_FOLDER}/{case:04d}_mini.vital"
                if print_when_file_loaded:
                    print(f"[{datetime.now()}] Loading vital file {file_path}")
                parsedFile = vitaldb.VitalFile(file_path, EXTRACTION_TRACK_NAMES)
            
            dataset = np.array(parsedFile.get_track_samples(track_name, 1/rate))
            
            if track_name == ABP_TRACK_NAME:
                # no filtering for ABP
                abp = dataset
                abp = pd.DataFrame(abp).ffill(axis=0).bfill(axis=0)[0].values
                if USE_MEMORY_CACHING:
                    TRACK_CACHE[cache_label] = abp
            elif track_name == ECG_TRACK_NAME:
                ecg = dataset
                # apply ECG filtering: first bandpass then do z-score normalization
                ecg = pd.DataFrame(ecg).ffill(axis=0).bfill(axis=0)[0].values
                ecg = apply_bandpass_filter(ecg, 1, 40, rate, 2)
                ecg = apply_zscore_normalization(ecg)
                
                if USE_MEMORY_CACHING:
                    TRACK_CACHE[cache_label] = ecg
            elif track_name == EEG_TRACK_NAME:
                eeg = dataset
                eeg = pd.DataFrame(eeg).ffill(axis=0).bfill(axis=0)[0].values
                # apply EEG filtering: bandpass only
                eeg = apply_bandpass_filter(eeg, 0.5, 50, rate, 2)
                if USE_MEMORY_CACHING:
                    TRACK_CACHE[cache_label] = eeg
            elif track_name == EVENT_TRACK_NAME:
                events = dataset
                if USE_MEMORY_CACHING:
                    TRACK_CACHE[cache_label] = events
        else:
            # cache hit, pull from cache
            if track_name == ABP_TRACK_NAME:
                abp = TRACK_CACHE[cache_label]
            elif track_name == ECG_TRACK_NAME:
                ecg = TRACK_CACHE[cache_label]
            elif track_name == EEG_TRACK_NAME:
                eeg = TRACK_CACHE[cache_label]
            elif track_name == EVENT_TRACK_NAME:
                events = TRACK_CACHE[cache_label]

    return (abp, ecg, eeg, events)

# ABP waveforms are used without further pre-processing
# ECG waveforms are band-pass filtered between 1 and 40 Hz, and Z-score normalized
# EEG waveforms are band-pass filtered between 0.5 and 50 Hz
if PRELOADING_CASES:
    # determine disk cache file label
    maxlabel = "ALL"
    if MAX_CASES is not None:
        maxlabel = str(MAX_CASES)
    picklefile = f"{CACHE_FILE_FOLDER}/{PREDICTION_WINDOW}_minutes_MAX{maxlabel}.trackcache"

    for track in tqdm(cases_of_interest_idx):
        # getting track data will cause a cache-check and fill when missing
        # will also apply appropriate filtering per track
        get_track_data(track, False)
    
    print(f"Generated track cache, {len(TRACK_CACHE)} records generated")


def get_segment_data(file_path):
    abp = None
    eeg = None
    ecg = None

    if USE_MEMORY_CACHING:
        if file_path in SEGMENT_CACHE:
            (abp, ecg, eeg) = SEGMENT_CACHE[file_path]
            return (abp, ecg, eeg)

    try:
        with h5py.File(file_path, 'r') as f:
            abp = np.array(f['abp'])
            ecg = np.array(f['ecg'])
            eeg = np.array(f['eeg'])
        
        abp = np.array(abp)
        eeg = np.array(eeg)
        ecg = np.array(ecg)

        if len(abp) > 30000:
            abp = abp[:30000]
        elif len(ecg) < 30000:
            abp = np.resize(abp, (30000))

        if len(ecg) > 30000:
            ecg = ecg[:30000]
        elif len(ecg) < 30000:
            ecg = np.resize(ecg, (30000))

        if len(eeg) > 7680:
            eeg = eeg[:7680]
        elif len(eeg) < 7680:
            eeg = np.resize(eeg, (7680))

        if USE_MEMORY_CACHING:
            SEGMENT_CACHE[file_path] = (abp, ecg, eeg)
    except:
        abp = None
        ecg = None
        eeg = None

    return (abp, ecg, eeg)

The following method is adapted from the preprocessing block of reference [6] (https://github.com/vitaldb/examples/blob/master/hypotension_art.ipynb)

The approach first finds an interoperative hypotensive event in the ABP waveform. It then backtracks to earlier in the waveform to extract a 60 second segment representing the waveform feature to use as model input. The figure below shows an example of this approach and is reproduced from the VitalDB example notebook referenced above.

Feature segment extraction

In [33]:
def getSurgeryBoundariesInSeconds(event, debug=False):
    eventIndices = np.argwhere(event==event)
    # we are looking for the last index where the string contains 'start
    lastStart = 0
    firstFinish = len(event)-1
    
    # find last start
    for idx in eventIndices:
        if 'started' in event[idx[0]]:
            if debug:
                print(event[idx[0]])
                print(idx[0])
            lastStart = idx[0]
    
    # find first finish
    for idx in eventIndices:
        if 'finish' in event[idx[0]]:
            if debug:
                print(event[idx[0]])
                print(idx[0])

            firstFinish = idx[0]
            break
    
    if debug:
        print(f'lastStart, firstFinish: {lastStart}, {firstFinish}')
    return (lastStart, firstFinish)
In [34]:
def areCaseSegmentsCached(caseid):
    seg_folder = f"{VITAL_EXTRACTED_SEGMENTS}/{caseid:04d}"
    return os.path.exists(seg_folder) and len(os.listdir(seg_folder)) > 0
In [35]:
def isAbpSegmentValidNumpy(samples, debug=False):
    valid = True
    if np.isnan(samples).mean() > 0.1:
        valid = False
        if debug:
            print(f">10% NaN")
    elif (samples > 200).any():
        valid = False
        if debug:
            print(f"Presence of BP > 200")
    elif (samples < 30).any():
        valid = False
        if debug:
            print(f"Presence of BP < 30")
    elif np.max(samples) - np.min(samples) < 30:
        if debug:
            print(f"Max - Min test < 30")
        valid = False
    elif (np.abs(np.diff(samples)) > 30).any():  # abrupt change -> noise
        if debug:
            print(f"Abrupt change (noise)")
        valid = False
    
    return valid
In [36]:
def isAbpSegmentValid(vf, debug=False):
    ABP_ECG_SRATE_HZ = 500
    ABP_TRACK_NAME = "SNUADC/ART"

    samples = np.array(vf.get_track_samples(ABP_TRACK_NAME, 1/ABP_ECG_SRATE_HZ))
    return isAbpSegmentValidNumpy(samples, debug)
In [37]:
def saveCaseSegments(caseid, positiveSegments, negativeSegments, compresslevel=9, debug=False, forceWrite=False):
    if len(positiveSegments) == 0 and len(negativeSegments) == 0:
        # exit early if no events found
        print(f'{caseid}: exit early, no segments to save')
        return

    # event composition
    # predictiveSegmentStart in seconds, predictiveSegmentEnd in seconds, predWindow (0 for negative), abp, ecg, eeg)
    # 0start, 1end, 2predwindow, 3abp, 4ecg, 5eeg

    seg_folder = f"{VITAL_EXTRACTED_SEGMENTS}/{caseid:04d}"
    if not os.path.exists(seg_folder):
        # if directory needs to be created, then there are no cached segments
        os.mkdir(seg_folder)
    else:
        if not forceWrite:
            # exit early if folder already exists, case already produced
            return

    # prior to writing files out, clear existing files
    for filename in os.listdir(seg_folder):
        file_path = os.path.join(seg_folder, filename)
        if debug:
            print(f'deleting: {file_path}')
        try:
            if os.path.isfile(file_path):
                os.unlink(file_path)
        except Exception as e:
            print('Failed to delete %s. Reason: %s' % (file_path, e))
    
    count_pos_saved = 0
    for i in range(0, len(positiveSegments)):
        event = positiveSegments[i]
        startIndex = event[0]
        endIndex = event[1]
        predWindow = event[2]
        abp = event[3]
        #ecg = event[4]
        #eeg = event[5]

        seg_filename = f"{caseid:04d}_{startIndex}_{predWindow:02d}_True.h5"
        seg_fullpath = f"{seg_folder}/{seg_filename}"
        if isAbpSegmentValidNumpy(abp, debug):
            count_pos_saved += 1

            abp = abp.tolist()
            ecg = event[4].tolist()
            eeg = event[5].tolist()
        
            f = h5py.File(seg_fullpath, "w")
            f.create_dataset('abp', data=abp, compression="gzip", compression_opts=compresslevel)
            f.create_dataset('ecg', data=ecg, compression="gzip", compression_opts=compresslevel)
            f.create_dataset('eeg', data=eeg, compression="gzip", compression_opts=compresslevel)
            
            f.flush()
            f.close()
            f = None

            abp = None
            ecg = None
            eeg = None

            # f.create_dataset('label', data=[1], compression="gzip", compression_opts=compresslevel)
            # f.create_dataset('pred_window', data=[event[2]], compression="gzip", compression_opts=compresslevel)
            # f.create_dataset('caseid', data=[caseid], compression="gzip", compression_opts=compresslevel)
        elif debug:
            print(f"{caseid:04d} {predWindow:02d}min {startIndex} starttime = ignored, segment validity issues")

    count_neg_saved = 0
    for i in range(0, len(negativeSegments)):
        event = negativeSegments[i]
        startIndex = event[0]
        endIndex = event[1]
        predWindow = event[2]
        abp = event[3]
        #ecg = event[4]
        #eeg = event[5]

        seg_filename = f"{caseid:04d}_{startIndex}_0_False.h5"
        seg_fullpath = f"{seg_folder}/{seg_filename}"
        if isAbpSegmentValidNumpy(abp, debug):
            count_neg_saved += 1

            abp = abp.tolist()
            ecg = event[4].tolist()
            eeg = event[5].tolist()
            
            f = h5py.File(seg_fullpath, "w")
            f.create_dataset('abp', data=abp, compression="gzip", compression_opts=compresslevel)
            f.create_dataset('ecg', data=ecg, compression="gzip", compression_opts=compresslevel)
            f.create_dataset('eeg', data=eeg, compression="gzip", compression_opts=compresslevel)
            
            f.flush()
            f.close()
            f = None

            abp = None
            ecg = None
            eeg = None

            # f.create_dataset('label', data=[0], compression="gzip", compression_opts=compresslevel)
            # f.create_dataset('pred_window', data=[0], compression="gzip", compression_opts=compresslevel)
            # f.create_dataset('caseid', data=[caseid], compression="gzip", compression_opts=compresslevel)
        elif debug:
            print(f"{caseid:04d} CleanWindow {startIndex} starttime = ignored, segment validity issues")
            
    if count_neg_saved == 0 and count_pos_saved == 0:
        print(f'{caseid}: nothing saved, all segments filtered')
In [38]:
# Generate hypotensive events
# Hypotensive events are defined as a 1-minute interval with sustained ABP of less than 65 mmHg
# Note: Hypotensive events should be at least 20 minutes apart to minimize potential residual effects from previous events
# Generate hypotension non-events
# To sample non-events, 30-minute segments where the ABP was above 75 mmHG were selected, and then
# three one-minute samples of each waveform were obtained from the middle of the segment
# both occur in extract_segments
#VITAL_EXTRACTED_SEGMENTS
def extract_segments(
    cases_of_interest_idx,
    debug=False,
    checkCache=True,
    forceWrite=False,
    returnSegments=False,
    skipInvalidCleanEvents=False,
    skipInvalidIohEvents=False
):
    # Sampling rate for ABP and ECG, Hz. These rates should be the same. Default = 500
    ABP_ECG_SRATE_HZ = 500

    # Sampling rate for EEG. Default = 128
    EEG_SRATE_HZ = 128

    # Final dataset for training and testing the model.
    positiveSegmentsMap = {}
    negativeSegmentsMap = {}
    iohEventsMap = {}
    cleanEventsMap = {}

    # Process each case and extract segments. For each segment identify presence of an event in the label zone.
    count_cases = len(cases_of_interest_idx)

    #for case_count, caseid in tqdm(enumerate(cases_of_interest_idx), total=count_cases):
    for case_count, caseid in enumerate(cases_of_interest_idx):
        if debug:
            print(f'Loading case: {caseid:04d}, ({case_count + 1} of {count_cases})')

        if checkCache and areCaseSegmentsCached(caseid):
            if debug:
                print(f'Skipping case: {caseid:04d}, already cached')
            # skip records we've already cached
            continue

        # read the arterial waveform
        (abp, ecg, eeg, event) = get_track_data(caseid)
        if debug:
            print(f'Length of {TRACK_NAMES[0]}:       {abp.shape[0]}')
            print(f'Length of {TRACK_NAMES[1]}:    {ecg.shape[0]}')
            print(f'Length of {TRACK_NAMES[2]}:     {eeg.shape[0]}')

        (startInSeconds, endInSeconds) = getSurgeryBoundariesInSeconds(event)
        if debug:
            print(f"Event markers indicate that surgery begins at {startInSeconds}s and ends at {endInSeconds}s.")

        track_length_seconds = int(len(abp) / ABP_ECG_SRATE_HZ)
        if debug:
            print(f"Processing case {caseid} with length {track_length_seconds}s")

        
        # check if the ABP segment in the surgery window is valid
        if debug:
            isSurgerySegmentValid = isAbpSegmentValidNumpy(abp[startInSeconds:endInSeconds])
            print(f'{caseid}: surgery segment valid: {isSurgerySegmentValid}')
        
        iohEvents = []
        cleanEvents = []
        i = 0
        started = False
        eofReached = False
        trackStartIndex = None

        # set i pointer (which operates in seconds) to start marker for surgery
        i = startInSeconds

        # FIRST PASS
        # in the first forward pass, we are going to identify the start/end boundaries of all IOH events within the case
        ioh_events_valid = []
        
        while i < track_length_seconds - 60 and i < endInSeconds:
            segmentStart = None
            segmentEnd = None
            segFound = False

            # look forward one minute
            abpSeg = abp[i * ABP_ECG_SRATE_HZ:(i + 60) * ABP_ECG_SRATE_HZ]

            # roll forward until we hit a one minute window where mean ABP >= 65 so we know leads are connected and it's tracking
            if not started:
                if np.nanmean(abpSeg) >= 65:
                    started = True
                    trackStartIndex = i
            # if we're started and mean abp for the window is <65, we are starting a new IOH event
            elif np.nanmean(abpSeg) < 65:
                segmentStart = i
                # now seek forward to find end of event, perpetually checking the lats minute of the IOH event
                for j in range(i + 60, track_length_seconds):
                    # look backward one minute
                    abpSegForward = abp[(j - 60) * ABP_ECG_SRATE_HZ:j * ABP_ECG_SRATE_HZ]
                    if np.nanmean(abpSegForward) >= 65:
                        segmentEnd = j - 1
                        break
                if segmentEnd is None:
                    eofReached = True
                else:
                    # otherwise, end of the IOH segment has been reached, record it
                    iohEvents.append((segmentStart, segmentEnd))
                    segFound = True
                    
                    if skipInvalidIohEvents:
                        isIohSegmentValid = isAbpSegmentValidNumpy(abpSeg)
                        ioh_events_valid.append(isIohSegmentValid)
                        if debug:
                            print(f'{caseid}: ioh segment valid: {isIohSegmentValid}, {segmentStart}, {segmentEnd}, {t_abp.shape}')
                    else:
                        ioh_events_valid.append(True)

            i += 1
            if not started:
                continue
            elif eofReached:
                break
            elif segFound:
                i = segmentEnd + 1

        # SECOND PASS
        # in the second forward pass, we are going to identify the start/end boundaries of all non-overlapping 30 minute "clean" windows
        # reuse the 'start of signal' index from our first pass
        if trackStartIndex is None:
            trackStartIndex = startInSeconds
        i = trackStartIndex
        eofReached = False

        clean_events_valid = []
        
        while i < track_length_seconds - 1800 and i < endInSeconds:
            segmentStart = None
            segmentEnd = None
            segFound = False

            startIndex = i
            endIndex = i + 1800

            # check to see if this 30 minute window overlaps any IOH events, if so ffwd to end of latest overlapping IOH
            overlapFound = False
            latestEnd = None
            for event in iohEvents:
                # case 1: starts during an event
                if startIndex >= event[0] and startIndex < event[1]:
                    latestEnd = event[1]
                    overlapFound = True
                # case 2: ends during an event
                elif endIndex >= event[0] and endIndex < event[1]:
                    latestEnd = event[1]
                    overlapFound = True
                # case 3: event occurs entirely inside of the window
                elif startIndex < event[0] and endIndex > event[1]:
                    latestEnd = event[1]
                    overlapFound = True

            # FFWD if we found an overlap
            if overlapFound:
                i = latestEnd + 1
                continue

            # look forward 30 minutes
            abpSeg = abp[startIndex * ABP_ECG_SRATE_HZ:endIndex * ABP_ECG_SRATE_HZ]

            # if we're started and mean abp for the window is >= 75, we are starting a new clean event
            if np.nanmean(abpSeg) >= 75:
                overlapFound = False
                latestEnd = None
                for event in iohEvents:
                    # case 1: starts during an event
                    if startIndex >= event[0] and startIndex < event[1]:
                        latestEnd = event[1]
                        overlapFound = True
                    # case 2: ends during an event
                    elif endIndex >= event[0] and endIndex < event[1]:
                        latestEnd = event[1]
                        overlapFound = True
                    # case 3: event occurs entirely inside of the window
                    elif startIndex < event[0] and endIndex > event[1]:
                        latestEnd = event[1]
                        overlapFound = True

                if not overlapFound:
                    segFound = True
                    segmentEnd = endIndex
                    cleanEvents.append((startIndex, endIndex))
                    
                    if skipInvalidCleanEvents:
                        isCleanSegmentValid = isAbpSegmentValidNumpy(abpSeg)
                        clean_events_valid.append(isCleanSegmentValid)
                        if debug:
                            print(f'{caseid}: clean segment valid: {isCleanSegmentValid}, {startIndex}, {endIndex}, {abpSeg.shape}')
                    else:
                        clean_events_valid.append(True)

            i += 10
            if segFound:
                i = segmentEnd + 1

        if debug:
            print(f"IOH Events for case {caseid}: {iohEvents}")
            print(f"Clean Events for case {caseid}: {cleanEvents}")

        positiveSegments = []
        negativeSegments = []

        # THIRD PASS
        # in the third pass, we will use the collections of ioh event windows to generate our actual extracted segments based on our prediction window (positive labels)
        for i in range(0, len(iohEvents)):
            # Don't extract segments from invalid IOH event windows.
            if not ioh_events_valid[i]:
                continue

            if debug:
                print(f"Checking event {iohEvents[i]}")
            # we want to review current event boundaries, as well as previous event boundaries if available
            event = iohEvents[i]
            previousEvent = None
            if i > 0:
                previousEvent = iohEvents[i - 1]

            for predWindow in ALL_PREDICTION_WINDOWS:
                if debug:
                    print(f"Checking event {iohEvents[i]} for pred {predWindow}")
                iohEventStart = event[0]
                predictiveSegmentEnd = event[0] - (predWindow*60)
                predictiveSegmentStart = predictiveSegmentEnd - 60

                if (predictiveSegmentStart < 0):
                    # don't rewind before the beginning of the track
                    if debug:
                        print(f"Checking event {iohEvents[i]} for pred {predWindow} - exit, before beginning")
                    continue
                elif (predictiveSegmentStart < trackStartIndex):
                    # don't rewind before the beginning of signal in track
                    if debug:
                        print(f"Checking event {iohEvents[i]} for pred {predWindow} - exit, before track start")
                    continue
                elif previousEvent is not None:
                    # does this event window come before or during the previous event?
                    overlapFound = False
                    # case 1: starts during an event
                    if predictiveSegmentStart >= previousEvent[0] and predictiveSegmentStart < previousEvent[1]:
                        overlapFound = True
                    # case 2: ends during an event
                    elif iohEventStart >= previousEvent[0] and iohEventStart < previousEvent[1]:
                        overlapFound = True
                    # case 3: event occurs entirely inside of the window
                    elif predictiveSegmentStart < previousEvent[0] and iohEventStart > previousEvent[1]:
                        overlapFound = True
                    # do not extract a case if we overlap witha nother IOH
                    if overlapFound:
                        if debug:
                            print(f"Checking event {iohEvents[i]} for pred {predWindow} - exit, overlap with earlier segment")
                        continue

                # track the positive segment
                positiveSegments.append((predictiveSegmentStart, predictiveSegmentEnd, predWindow,
                    abp[predictiveSegmentStart*ABP_ECG_SRATE_HZ:predictiveSegmentEnd*ABP_ECG_SRATE_HZ],
                    ecg[predictiveSegmentStart*ABP_ECG_SRATE_HZ:predictiveSegmentEnd*ABP_ECG_SRATE_HZ],
                    eeg[predictiveSegmentStart*EEG_SRATE_HZ:predictiveSegmentEnd*EEG_SRATE_HZ]))

        # FOURTH PASS
        # in the fourth and final pass, we will use the collections of clean event windows to generate our actual extracted segments based (negative labels)
        for i in range(0, len(cleanEvents)):
            # Don't extract segments from invalid clean event windows.
            if not clean_events_valid[i]:
                continue
            
            # everything will be 30 minutes long at least
            event = cleanEvents[i]
            # choose sample 1 @ 10 minutes
            # choose sample 2 @ 15 minutes
            # choose sample 3 @ 20 minutes
            timeAtTen = event[0] + 600
            timeAtFifteen = event[0] + 900
            timeAtTwenty = event[0] + 1200

            negativeSegments.append((timeAtTen, timeAtTen + 60, 0,
                                   abp[timeAtTen*ABP_ECG_SRATE_HZ:(timeAtTen + 60)*ABP_ECG_SRATE_HZ],
                                   ecg[timeAtTen*ABP_ECG_SRATE_HZ:(timeAtTen + 60)*ABP_ECG_SRATE_HZ],
                                   eeg[timeAtTen*EEG_SRATE_HZ:(timeAtTen + 60)*EEG_SRATE_HZ]))
            negativeSegments.append((timeAtFifteen, timeAtFifteen + 60, 0,
                                   abp[timeAtFifteen*ABP_ECG_SRATE_HZ:(timeAtFifteen + 60)*ABP_ECG_SRATE_HZ],
                                   ecg[timeAtFifteen*ABP_ECG_SRATE_HZ:(timeAtFifteen + 60)*ABP_ECG_SRATE_HZ],
                                   eeg[timeAtFifteen*EEG_SRATE_HZ:(timeAtFifteen + 60)*EEG_SRATE_HZ]))
            negativeSegments.append((timeAtTwenty, timeAtTwenty + 60, 0,
                                   abp[timeAtTwenty*ABP_ECG_SRATE_HZ:(timeAtTwenty + 60)*ABP_ECG_SRATE_HZ],
                                   ecg[timeAtTwenty*ABP_ECG_SRATE_HZ:(timeAtTwenty + 60)*ABP_ECG_SRATE_HZ],
                                   eeg[timeAtTwenty*EEG_SRATE_HZ:(timeAtTwenty + 60)*EEG_SRATE_HZ]))

        if returnSegments:
            positiveSegmentsMap[caseid] = positiveSegments
            negativeSegmentsMap[caseid] = negativeSegments
            iohEventsMap[caseid] = iohEvents
            cleanEventsMap[caseid] = cleanEvents
        
        saveCaseSegments(caseid, positiveSegments, negativeSegments, 9, debug=debug, forceWrite=forceWrite)

        #if debug:
        print(f'{caseid}: positiveSegments: {len(positiveSegments)}, negativeSegments: {len(negativeSegments)}')

    return positiveSegmentsMap, negativeSegmentsMap, iohEventsMap, cleanEventsMap

Case Extraction - Generage Segments Needed For Training¶

Ensure that all needed segments are in place for the cases that are being used. If data is already stored on disk this method returns immediately.

In [39]:
print('Time to extract segments!')
Time to extract segments!
In [40]:
MANUAL_EXTRACT=True
SKIP_INVALID_CLEAN_EVENTS=True
SKIP_INVALID_IOH_EVENTS=True

if MANUAL_EXTRACT:
    mycoi = cases_of_interest_idx
    #mycoi = cases_of_interest_idx[:2800]
    #mycoi = [1]

    cnt = 0
    mod = 0
    for ci in mycoi:
        cnt += 1
        if mod % 100 == 0:
            print(f'count processed: {mod}, current case index: {ci}')
        try:
            p, n, i, c = extract_segments([ci], debug=False, checkCache=True, 
                                          forceWrite=True, returnSegments=False, 
                                          skipInvalidCleanEvents=SKIP_INVALID_CLEAN_EVENTS,
                                          skipInvalidIohEvents=SKIP_INVALID_IOH_EVENTS)
            p = None
            n = None
            i = None
            c = None
        except:
            print(f'error on extract segment: {ci}')
        mod += 1
    print(f'extracted: {cnt}')
count processed: 0, current case index: 1
count processed: 100, current case index: 229
count processed: 200, current case index: 481
count processed: 300, current case index: 740
count processed: 400, current case index: 954
count processed: 500, current case index: 1160
count processed: 600, current case index: 1367
count processed: 700, current case index: 1595
count processed: 800, current case index: 1822
count processed: 900, current case index: 2055
count processed: 1000, current case index: 2317
count processed: 1100, current case index: 2533
count processed: 1200, current case index: 2775
count processed: 1300, current case index: 3014
count processed: 1400, current case index: 3218
count processed: 1500, current case index: 3442
count processed: 1600, current case index: 3682
count processed: 1700, current case index: 3879
count processed: 1800, current case index: 4109
count processed: 1900, current case index: 4347
count processed: 2000, current case index: 4603
count processed: 2100, current case index: 4830
count processed: 2200, current case index: 5072
count processed: 2300, current case index: 5314
count processed: 2400, current case index: 5568
count processed: 2500, current case index: 5793
count processed: 2600, current case index: 6017
count processed: 2700, current case index: 6248
extracted: 2763

Track and Segment Validity Checks¶

In [41]:
def printAbp(case_id_to_check, plot_invalid_only=False):
        vf_path = f'{VITAL_MINI}/{case_id_to_check:04d}_mini.vital'
        
        if not os.path.isfile(vf_path):
              return
        
        vf = vitaldb.VitalFile(vf_path)
        abp = vf.to_numpy(TRACK_NAMES[0], 1/500)
        
        print(f'Case {case_id_to_check}')
        print(f'ABP Shape: {abp.shape}')

        print(f'nanmin: {np.nanmin(abp)}')
        print(f'nanmean: {np.nanmean(abp)}')
        print(f'nanmax: {np.nanmax(abp)}')
        
        is_valid = isAbpSegmentValidNumpy(abp, debug=True)
        print(f'valid: {is_valid}')

        if plot_invalid_only and is_valid:
            return
            
        plt.figure(figsize=(20, 5))
        plt_color = 'C0' if is_valid else 'red'
        plt.plot(abp, plt_color)
        plt.title(f'ABP - Entire Track - Case {case_id_to_check} - {abp.shape[0] / 500} seconds')
        plt.axhline(y = 65, color = 'maroon', linestyle = '--')
        plt.show()
In [42]:
def printSegments(segmentsMap, case_id_to_check, print_label, normalize=False):
    for (x1, x2, r, abp, ecg, eeg) in segmentsMap[case_id_to_check]:
        print(f'{print_label}: Case {case_id_to_check}')
        print(f'lookback window: {r} min')
        print(f'start time: {x1}')
        print(f'end time: {x2}')
        print(f'length: {x2 - x1} sec')
        
        print(f'ABP Shape: {abp.shape}')
        print(f'ECG Shape: {ecg.shape}')
        print(f'EEG Shape: {eeg.shape}')

        print(f'nanmin: {np.nanmin(abp)}')
        print(f'nanmean: {np.nanmean(abp)}')
        print(f'nanmax: {np.nanmax(abp)}')
        
        is_valid = isAbpSegmentValidNumpy(abp, debug=True)
        print(f'valid: {is_valid}')

        # ABP normalization
        x_abp = np.copy(abp)
        if normalize:
            x_abp -= 65
            x_abp /= 65

        plt.figure(figsize=(20, 5))
        plt_color = 'C0' if is_valid else 'red'
        plt.plot(x_abp, plt_color)
        plt.title('ABP')
        plt.axhline(y = 65, color = 'maroon', linestyle = '--')
        plt.show()

        plt.figure(figsize=(20, 5))
        plt.plot(ecg, 'teal')
        plt.title('ECG')
        plt.show()

        plt.figure(figsize=(20, 5))
        plt.plot(eeg, 'indigo')
        plt.title('EEG')
        plt.show()

        print()
In [43]:
def printEvents(abp_raw, eventsMap, case_id_to_check, print_label, normalize=False):
    for (x1, x2) in eventsMap[case_id_to_check]:
        print(f'{print_label}: Case {case_id_to_check}')
        print(f'start time: {x1}')
        print(f'end time: {x2}')
        print(f'length: {x2 - x1} sec')

        abp = abp_raw[x1*500:x2*500]
        print(f'ABP Shape: {abp.shape}')

        print(f'nanmin: {np.nanmin(abp)}')
        print(f'nanmean: {np.nanmean(abp)}')
        print(f'nanmax: {np.nanmax(abp)}')
        
        is_valid = isAbpSegmentValidNumpy(abp, debug=True)
        print(f'valid: {is_valid}')

        # ABP normalization
        x_abp = np.copy(abp)
        if normalize:
            x_abp -= 65
            x_abp /= 65

        plt.figure(figsize=(20, 5))
        plt_color = 'C0' if is_valid else 'red'
        plt.plot(x_abp, plt_color)
        plt.title('ABP')
        plt.axhline(y = 65, color = 'maroon', linestyle = '--')
        plt.show()

        print()
In [44]:
def moving_average(x, seconds=60):
    w = seconds * 500
    return np.convolve(np.squeeze(x), np.ones(w), 'valid') / w
In [45]:
def printAbpOverlay(
    case_id_to_check,
    positiveSegmentsMap,
    negativeSegmentsMap,
    iohEventsMap,
    cleanEventsMap,
    movingAverage=False
):
    def overlay_segments(plt, segmentsMap, color, linestyle, positive=False):
        for (x1, x2, r, abp, ecg, eeg) in segmentsMap:
            sx1 = x1*500
            sx2 = x2*500
            mycolor = color
            if positive:
                if r == 3:
                    mycolor = 'red'
                elif r == 5:
                    mycolor = 'crimson'
                elif r == 10:
                    mycolor = 'tomato'
                else:
                    mycolor = 'salmon'
            plt.axvline(x = sx1, color = mycolor, linestyle = linestyle)
            plt.axvline(x = sx2, color = mycolor, linestyle = linestyle)
            plt.axvspan(sx1, sx2, facecolor = mycolor, alpha = 0.1)

    def overlay_events(plt, eventsMap, color, linestyle):
        for (x1, x2) in eventsMap:
            sx1 = x1*500
            sx2 = x2*500
            plt.axvline(x = sx1, color = color, linestyle = linestyle)
            plt.axvline(x = sx2, color = color, linestyle = linestyle)
            plt.axvspan(sx1, sx2, facecolor = color, alpha = 0.1)
    
    vf_path = f'{VITAL_MINI}/{case_id_to_check:04d}_mini.vital'

    if not os.path.isfile(vf_path):
          return

    vf = vitaldb.VitalFile(vf_path)
    abp = vf.to_numpy(TRACK_NAMES[0], 1/500)
    
    abp_mov_avg = None
    if movingAverage:
        abp_mov_avg = moving_average(abp)

    print(f'Case {case_id_to_check}')
    print(f'ABP Shape: {abp.shape}')

    print(f'nanmin: {np.nanmin(abp)}')
    print(f'nanmean: {np.nanmean(abp)}')
    print(f'nanmax: {np.nanmax(abp)}')

    is_valid = isAbpSegmentValidNumpy(abp, debug=True)
    print(f'valid: {is_valid}')

    plt.figure(figsize=(24, 8))
    plt_color = 'C0' if is_valid else 'red'
    plt.plot(abp, plt_color)
    plt.title(f'ABP - Entire Track - Case {case_id_to_check} - {abp.shape[0] / 500} seconds')
    plt.axhline(y = 65, color = 'maroon', linestyle = '--')
    
    if movingAverage:
        plt.plot(abp_mov_avg, 'maroon')

    # https://matplotlib.org/stable/gallery/lines_bars_and_markers/linestyles.html#linestyles
    
    overlay_segments(plt, positiveSegmentsMap[case_id_to_check], 'crimson', (0, (1, 1)), positive=True)
    
    overlay_segments(plt, negativeSegmentsMap[case_id_to_check], 'teal', (0, (1, 1)))

    overlay_events(plt, iohEventsMap[case_id_to_check], 'brown', '-')
    
    overlay_events(plt, cleanEventsMap[case_id_to_check], 'teal', '-')

    plt.show()

Reality Check All Cases¶

In [46]:
# Global flag to control creating track and segment plots.
# These plots are expensive to create, but very interesting.
# Disable when training in bulk to speed up notebook processing.
PERFORM_TRACK_VALIDITY_CHECKS = False
In [47]:
# Check if all ABPs are well formed. Fast load and scan of the raw track data for ABP.
DISPLAY_REALITY_CHECK_ABP=True
DISPLAY_REALITY_CHECK_ABP_FIRST_ONLY=True

if PERFORM_TRACK_VALIDITY_CHECKS and DISPLAY_REALITY_CHECK_ABP:
    for case_id_to_check in cases_of_interest_idx:
        printAbp(case_id_to_check, plot_invalid_only=False)
        
        if DISPLAY_REALITY_CHECK_ABP_FIRST_ONLY:
            break

Validate Malformed Vital Files - Missing One Or More Tracks¶

In [48]:
# These are Vital Files removed because of malformed ABP waveforms.
DISPLAY_MALFORMED_ABP=True
DISPLAY_MALFORMED_ABP_FIRST_ONLY=True

if PERFORM_TRACK_VALIDITY_CHECKS and DISPLAY_MALFORMED_ABP:
    malformed_case_ids = pd.read_csv('malformed_tracks_filter.csv', header=None, names=['caseid']).set_index('caseid').index

    for case_id_to_check in malformed_case_ids:
        printAbp(case_id_to_check)
        
        if DISPLAY_MALFORMED_ABP_FIRST_ONLY:
            break

Validate Cases With No Segments Saved¶

In [49]:
DISPLAY_NO_SEGMENTS_CASES=True
DISPLAY_NO_SEGMENTS_CASES_FIRST_ONLY=True

if PERFORM_TRACK_VALIDITY_CHECKS and DISPLAY_NO_SEGMENTS_CASES:
    no_segments_case_ids = [3413, 3476, 3533, 3992, 4328, 4648, 4703, 4733, 5130, 5501, 5693, 5908]

    for case_id_to_check in no_segments_case_ids:
        printAbp(case_id_to_check)
        
        if DISPLAY_NO_SEGMENTS_CASES_FIRST_ONLY:
            break

Select Case For Segment Extraction Validation¶

Generate segment data for one or more cases. Perform a deep analysis of event and segment quality.

In [50]:
#mycoi = cases_of_interest_idx
my_cases_of_interest_idx = cases_of_interest_idx[:10]
#mycoi = [1]

# Note: By default, match extract segments processing block above.
# However, regenerate data real time to allow seeing impacts on segment extraction.
# This is why both checkCache and forceWrite are false by default.
positiveSegmentsMap, negativeSegmentsMap, iohEventsMap, cleanEventsMap = None, None, None, None

if PERFORM_TRACK_VALIDITY_CHECKS:
    positiveSegmentsMap, negativeSegmentsMap, iohEventsMap, cleanEventsMap = \
        extract_segments(my_cases_of_interest_idx, debug=False,
                         checkCache=False, forceWrite=False, returnSegments=True,
                         skipInvalidCleanEvents=SKIP_INVALID_CLEAN_EVENTS,
                         skipInvalidIohEvents=SKIP_INVALID_IOH_EVENTS)

Select a specific case to perform detailed low level analysis.

In [51]:
case_id_to_check = my_cases_of_interest_idx[0]

print(case_id_to_check)
print()

if PERFORM_TRACK_VALIDITY_CHECKS:
    print((
        len(positiveSegmentsMap[case_id_to_check]),
        len(negativeSegmentsMap[case_id_to_check]),
        len(iohEventsMap[case_id_to_check]),
        len(cleanEventsMap[case_id_to_check])
    ))
1

In [52]:
if PERFORM_TRACK_VALIDITY_CHECKS:
    printAbp(case_id_to_check)

Positive Events for Case - IOH Events¶

Used to define the range in front of which positive segments will be extracted. Positive samples happen in front of this region.

In [53]:
tmp_abp = None

if PERFORM_TRACK_VALIDITY_CHECKS:
    tmp_vf_path = f'{VITAL_MINI}/{case_id_to_check:04d}_mini.vital'
    tmp_vf = vitaldb.VitalFile(tmp_vf_path)
    tmp_abp = tmp_vf.to_numpy(TRACK_NAMES[0], 1/500)
In [54]:
if PERFORM_TRACK_VALIDITY_CHECKS:
    printEvents(tmp_abp, iohEventsMap, case_id_to_check, 'IOH Event Segment', normalize=False)

Negative Events for Case - Non-IOH Events¶

Used to define the range from in which negative segments will be extracted. Negative samples happen within this region.

In [55]:
if PERFORM_TRACK_VALIDITY_CHECKS:
    printEvents(tmp_abp, cleanEventsMap, case_id_to_check, 'Clean Event Segment', normalize=False)

Positive Segments for Case - IOH Events Predicted Using These¶

One minute regions sampled and used for training the model for "positive" events.

In [56]:
if PERFORM_TRACK_VALIDITY_CHECKS:
    printSegments(positiveSegmentsMap, case_id_to_check, 'Positive Segment - IOH Event', normalize=False)

Negative Segments for Case - Non-IOH Events Predicted Using These¶

One minute regions sampled and used for training the model for "negative" events.

In [57]:
if PERFORM_TRACK_VALIDITY_CHECKS:
    printSegments(negativeSegmentsMap, case_id_to_check, 'Negative Segment - Non-Event', normalize=False)

Overlay Plot of All Events and Segments Extracted¶

For each of the cases in my_cases_of_interest_idx overlay the results of event and segment extraction.

In [58]:
DISPLAY_OVERLAY_CHECK_ABP=True
DISPLAY_OVERLAY_CHECK_ABP_FIRST_ONLY=True

if PERFORM_TRACK_VALIDITY_CHECKS and DISPLAY_OVERLAY_CHECK_ABP:
    for case_id_to_check in my_cases_of_interest_idx:
        printAbpOverlay(case_id_to_check, positiveSegmentsMap, 
                        negativeSegmentsMap, iohEventsMap, cleanEventsMap, movingAverage=True)
        
        if DISPLAY_OVERLAY_CHECK_ABP_FIRST_ONLY:
            break
In [59]:
# free memory
del tmp_abp

Generate Train/Val/Test Splits¶

In [60]:
def get_segment_attributes_from_filename(file_path):
    pieces = os.path.basename(file_path).split('_')
    case = int(pieces[0])
    startX = int(pieces[1])
    predWindow = int(pieces[2])
    label = pieces[3].replace('.h5', '')
    return (case, startX, predWindow, label)
In [61]:
count_negative_samples = 0
count_positive_samples = 0

samples = []

from glob import glob
seg_folder = f"{VITAL_EXTRACTED_SEGMENTS}"
filenames = [y for x in os.walk(seg_folder) for y in glob(os.path.join(x[0], '*.h5'))]

for filename in filenames:
    (case, start_x, pred_window, label) = get_segment_attributes_from_filename(filename)
    #print((case, start_x, pred_window, label))
    
    # only load cases for cases of interest; this folder could have segments for hundreds of cases
    if case not in cases_of_interest_idx:
        continue

    #PREDICTION_WINDOW = 3
    if pred_window == 0 or pred_window == PREDICTION_WINDOW or PREDICTION_WINDOW == 'ALL':
        #print((case, start_x, pred_window, label))
        if label == 'True':
            count_positive_samples += 1
        else:
            count_negative_samples += 1
        sample = (filename, label)
        samples.append(sample)

print()
print(f"samples loaded:         {len(samples):5} ")
print(f'count negative samples: {count_negative_samples:5}')
print(f'count positive samples: {count_positive_samples:5}')
samples loaded:         19676 
count negative samples: 14298
count positive samples:  5378
In [62]:
# Divide by cases
sample_cases = defaultdict(lambda: []) 

for fn, _ in samples:
    (case, start_x, pred_window, label) = get_segment_attributes_from_filename(fn)
    sample_cases[case].append((fn, label))

# understand any missing cases of interest
sample_cases_idx = pd.Index(sample_cases.keys())
missing_case_ids = cases_of_interest_idx.difference(sample_cases_idx)
print(f'cases with no samples: {missing_case_ids.shape[0]}')
print(f'    {missing_case_ids}')
print()
    
# Split data into training, validation, and test sets
# Use 6:1:3 ratio and prevent samples from a single case from being split across different sets
# Note: number of samples at each time point is not the same, because the first event can occur before the 3/5/10/15 minute mark

# Set target sizes
train_ratio = 0.6
val_ratio = 0.1
test_ratio = 1 - train_ratio - val_ratio # ensure ratios sum to 1

# Split samples into train and other
sample_cases_train, sample_cases_other = train_test_split(list(sample_cases.keys()), test_size=(1 - train_ratio), random_state=RANDOM_SEED)

# Split other into val and test
sample_cases_val, sample_cases_test = train_test_split(sample_cases_other, test_size=(test_ratio / (1 - train_ratio)), random_state=RANDOM_SEED)

# Check how many samples are in each set
print(f'Train/Val/Test Summary by Cases')
print(f"Train cases:  {len(sample_cases_train):5}, ({len(sample_cases_train) / len(sample_cases):.2%})")
print(f"Val cases:    {len(sample_cases_val):5}, ({len(sample_cases_val) / len(sample_cases):.2%})")
print(f"Test cases:   {len(sample_cases_test):5}, ({len(sample_cases_test) / len(sample_cases):.2%})")
print(f"Total cases:  {(len(sample_cases_train) + len(sample_cases_val) + len(sample_cases_test)):5}")
cases with no samples: 20
    Index([ 149,  561,  864,  979, 1158, 1174, 1317, 1957, 2221, 2830, 2859, 4380,
       4755, 4783, 5080, 5204, 5266, 5755, 6275, 6360],
      dtype='int64')

Train/Val/Test Summary by Cases
Train cases:   1645, (59.97%)
Val cases:      274, (9.99%)
Test cases:     824, (30.04%)
Total cases:   2743
In [63]:
sample_cases_train = set(sample_cases_train)
sample_cases_val = set(sample_cases_val)
sample_cases_test = set(sample_cases_test)

samples_train = []
samples_val = []
samples_test = []

for cid, segs in sample_cases.items():
    if cid in sample_cases_train:
        for seg in segs:
            samples_train.append(seg)
    if cid in sample_cases_val:
        for seg in segs:
            samples_val.append(seg)
    if cid in sample_cases_test:
        for seg in segs:
            samples_test.append(seg)
            
# Check how many samples are in each set
print(f'Train/Val/Test Summary by Events')
print(f"Train events:  {len(samples_train):5}, ({len(samples_train) / len(samples):.2%})")
print(f"Val events:    {len(samples_val):5}, ({len(samples_val) / len(samples):.2%})")
print(f"Test events:   {len(samples_test):5}, ({len(samples_test) / len(samples):.2%})")
print(f"Total events:  {(len(samples_train) + len(samples_val) + len(samples_test)):5}")
Train/Val/Test Summary by Events
Train events:  11725, (59.59%)
Val events:     2013, (10.23%)
Test events:    5938, (30.18%)
Total events:  19676

Validate train/val/test Splits¶

In [64]:
PRINT_ALL_CASE_SPLIT_DETAILS = False

case_to_sample_distribution = defaultdict(lambda: {'train': [0, 0], 'val': [0, 0], 'test': [0, 0]})

def populate_case_to_sample_distribution(mysamples, idx):
    neg = 0
    pos = 0
    
    for fn, _ in mysamples:
        (case, start_x, pred_window, label) = get_segment_attributes_from_filename(fn)
        slot = 0 if label == 'False' else 1
        case_to_sample_distribution[case][idx][slot] += 1
        if slot == 0:
            neg += 1
        else:
            pos += 1
                
    return (neg, pos)

train_neg, train_pos = populate_case_to_sample_distribution(samples_train, 'train')
val_neg, val_pos     = populate_case_to_sample_distribution(samples_val,   'val')
test_neg, test_pos   = populate_case_to_sample_distribution(samples_test,  'test')

print(f'Total Cases Present: {len(case_to_sample_distribution):5}')
print()

train_tot = train_pos + train_neg
val_tot = val_pos + val_neg
test_tot = test_pos + test_neg
print(f'Train: P: {train_pos:5} ({(train_pos/train_tot):.2}), N: {train_neg:5} ({(train_neg/train_tot):.2})')
print(f'Val:   P: {val_pos:5} ({(val_pos/val_tot):.2}), N: {val_neg:5} ({(val_neg/val_tot):.2})')
print(f'Test:  P: {test_pos:5} ({(test_pos/test_tot):.2}), N: {test_neg:5}  ({(test_neg/test_tot):.2})')
print()

total_pos = train_pos + val_pos + test_pos
total_neg = train_neg + val_neg + test_neg
total = total_pos + total_neg
print(f'P/N Ratio: {(total_pos)}:{(total_neg)}')
print(f'P Percent: {(total_pos/total):.2}')
print(f'N Percent: {(total_neg/total):.2}')
print()

if PRINT_ALL_CASE_SPLIT_DETAILS:
    for ci in sorted(case_to_sample_distribution.keys()):
        print(f'{ci}: {case_to_sample_distribution[ci]}')
Total Cases Present:  2743

Train: P:  3221 (0.27), N:  8504 (0.73)
Val:   P:   591 (0.29), N:  1422 (0.71)
Test:  P:  1566 (0.26), N:  4372  (0.74)

P/N Ratio: 5378:14298
P Percent: 0.27
N Percent: 0.73

In [65]:
def check_data_leakage(full_data, train_data, val_data, test_data):
    # Convert to sets for easier operations
    full_data_set = set(full_data)
    train_data_set = set(train_data)
    val_data_set = set(val_data)
    test_data_set = set(test_data)

    # Check if train, val, test are subsets of full_data
    if not train_data_set.issubset(full_data_set):
        return "Train data has leakage"
    if not val_data_set.issubset(full_data_set):
        return "Validation data has leakage"
    if not test_data_set.issubset(full_data_set):
        return "Test data has leakage"

    # Check if train, val, test are disjoint
    if train_data_set & val_data_set:
        return "Train and validation data are not disjoint"
    if train_data_set & test_data_set:
        return "Train and test data are not disjoint"
    if val_data_set & test_data_set:
        return "Validation and test data are not disjoint"

    return "No data leakage detected"

# Usage
print(check_data_leakage(list(sample_cases.keys()), sample_cases_train, sample_cases_val, sample_cases_test))
No data leakage detected
In [66]:
# Create vitalDataset class
class vitalDataset(Dataset):
    def __init__(self, samples, normalize_abp=False):
        self.samples = samples
        self.normalize_abp = normalize_abp

    def __len__(self):
        return len(self.samples)

    def __getitem__(self, idx):
        # Get metadata for this event
        segment = self.samples[idx]

        file_path = segment[0]
        label = (segment[1] == "True" or segment[1] == "True.vital")

        (abp, ecg, eeg) = get_segment_data(file_path)

        if abp is None or eeg is None or ecg is None:
            return (np.zeros(30000), np.zeros(30000), np.zeros(7680), 0)
        
        if self.normalize_abp:
            abp -= 65
            abp /= 65

        return abp, ecg, eeg, label
In [67]:
NORMALIZE_ABP = False

train_dataset = vitalDataset(samples_train, NORMALIZE_ABP)
val_dataset = vitalDataset(samples_val, NORMALIZE_ABP)
test_dataset = vitalDataset(samples_test, NORMALIZE_ABP)

train/val/test Splits Summary Statistics¶

In [68]:
def generate_nan_means(mydataset):
    xs = np.zeros(len(mydataset))
    ys = np.zeros(len(mydataset), dtype=int)

    for i, (abp, ecg, eeg, y) in enumerate(iter(mydataset)):
        xs[i] = np.nanmean(abp)
        ys[i] = int(y)

    return pd.DataFrame({'abp_nanmean': xs, 'label': ys})
In [69]:
def generate_nan_means_summaries(tr, va, te, group='all'):
    if group == 'all':
        return pd.DataFrame({
            'train': tr.describe()['abp_nanmean'],
            'validation': va.describe()['abp_nanmean'],
            'test': te.describe()['abp_nanmean']
        })
    
    mytr = tr.reset_index()
    myva = va.reset_index()
    myte = te.reset_index()
    
    label_flag = True if group == 'positive' else False
    
    return pd.DataFrame({
        'train':      mytr[mytr['label'] == label_flag].describe()['abp_nanmean'],
        'validation': myva[myva['label'] == label_flag].describe()['abp_nanmean'],
        'test':       myte[myte['label'] == label_flag].describe()['abp_nanmean']
    })
In [70]:
def plot_nan_means(df, plot_label):
    mydf = df.reset_index()

    maxCases = 'ALL' if MAX_CASES is None else MAX_CASES
    plot_title = f'{plot_label} - ABP nanmean Values, {PREDICTION_WINDOW} Minutes, {maxCases} Cases'
    
    ax = mydf[mydf['label'] == False].plot.scatter(
        x='index', y='abp_nanmean', color='DarkBlue', label='Negative', 
        title=plot_title, figsize=(16,9))

    negative_median = mydf[mydf['label'] == False]['abp_nanmean'].median()
    ax.axhline(y=negative_median, color='DarkBlue', linestyle='--', label='Negative Median')
    
    mydf[mydf['label'] == True].plot.scatter(
        x='index', y='abp_nanmean', color='DarkOrange', label='Positive', ax=ax);
    
    positive_median = mydf[mydf['label'] == True]['abp_nanmean'].median()
    ax.axhline(y=positive_median, color='DarkOrange', linestyle='--', label='Positive Median')
    
    ax.legend(loc='upper right')
In [71]:
def plot_nan_means_hist(df):
    df.plot.hist(column=['abp_nanmean'], by='label', bins=50, figsize=(10, 8));
In [72]:
train_abp_nanmeans = generate_nan_means(train_dataset)
val_abp_nanmeans = generate_nan_means(val_dataset)
test_abp_nanmeans = generate_nan_means(test_dataset)

ABP Nanmean Summaries¶

In [73]:
generate_nan_means_summaries(train_abp_nanmeans, val_abp_nanmeans, test_abp_nanmeans)
Out[73]:
train validation test
count 11725.000000 2013.000000 5938.000000
mean 85.342557 84.527469 85.337452
std 12.102408 11.928181 12.139388
min 65.136129 65.176681 65.178063
25% 75.843523 75.141869 75.794924
50% 83.549179 82.839065 83.643432
75% 93.382970 92.584281 92.977931
max 138.285504 131.649859 147.949437
In [74]:
generate_nan_means_summaries(train_abp_nanmeans, val_abp_nanmeans, test_abp_nanmeans, group='positive')
Out[74]:
train validation test
count 3221.000000 591.000000 1566.000000
mean 76.393673 75.830934 76.462263
std 9.120690 8.735726 9.256418
min 65.136129 65.176681 65.178063
25% 70.014729 69.719051 69.994147
50% 74.056950 73.944380 74.136967
75% 80.011449 79.447594 80.095860
max 132.143619 124.815472 136.381225
In [75]:
generate_nan_means_summaries(train_abp_nanmeans, val_abp_nanmeans, test_abp_nanmeans, group='negative')
Out[75]:
train validation test
count 8504.000000 1422.000000 4372.000000
mean 88.732062 88.141852 88.516442
std 11.341231 11.191253 11.452285
min 65.225560 66.221575 65.476802
25% 80.095975 79.646864 79.987240
50% 87.345195 86.884530 87.118146
75% 95.959147 95.516197 95.679384
max 138.285504 131.649859 147.949437

ABP Nanmean Histograms¶

In [76]:
plot_nan_means_hist(train_abp_nanmeans)
In [77]:
plot_nan_means_hist(val_abp_nanmeans)
In [78]:
plot_nan_means_hist(test_abp_nanmeans)

ABP Nanmean Scatter Plots¶

In [79]:
plot_nan_means(train_abp_nanmeans, 'Train')
In [80]:
plot_nan_means(val_abp_nanmeans, 'Validation')
In [81]:
plot_nan_means(test_abp_nanmeans, 'Test')
In [82]:
# Cleanup
del train_abp_nanmeans
del val_abp_nanmeans
del test_abp_nanmeans

Classification Studies¶

Check if data can be easily classified using non-deep learning methods. Create a balanced sample of IOH and non-IOH events and use a simple classifier to see if the data can be easily separated. Datasets which can be easily separated by non-deep learning methods should also be easily classified by deep learning models.

In [83]:
MAX_CLASSIFICATION_SAMPLES = 250
MAX_SAMPLE_SIZE = 1600
classification_sample_size = MAX_SAMPLE_SIZE if len(samples) >= MAX_SAMPLE_SIZE else len(samples)

classification_samples = random.sample(samples, classification_sample_size)

positive_samples = []
negative_samples = []

for sample in classification_samples:
    (sampleAbp, sampleEcg, sampleEeg) = get_segment_data(sample[0])
    
    if sample[1] == "True":
        positive_samples.append([sample[0], True, sampleAbp, sampleEcg, sampleEeg])
    else:
        negative_samples.append([sample[0], False, sampleAbp, sampleEcg, sampleEeg])

positive_samples = pd.DataFrame(positive_samples, columns=["file_path", "segment_label", "segment_abp", "segment_ecg", "segment_eeg"])
negative_samples = pd.DataFrame(negative_samples, columns=["file_path", "segment_label", "segment_abp", "segment_ecg", "segment_eeg"])

total_to_sample_pos = MAX_CLASSIFICATION_SAMPLES if len(positive_samples) >= MAX_CLASSIFICATION_SAMPLES else len(positive_samples)
total_to_sample_neg = MAX_CLASSIFICATION_SAMPLES if len(negative_samples) >= MAX_CLASSIFICATION_SAMPLES else len(negative_samples)

# Select up to 150 random samples where segment_label is True
positive_samples = positive_samples.sample(total_to_sample_pos, random_state=RANDOM_SEED)
# Select up to 150 random samples where segment_label is False
negative_samples = negative_samples.sample(total_to_sample_neg, random_state=RANDOM_SEED)

print(f'positive_samples: {len(positive_samples)}')
print(f'negative_samples: {len(negative_samples)}')

# Combine the positive and negative samples
samples_balanced = pd.concat([positive_samples, negative_samples])
positive_samples: 250
negative_samples: 250

Define function to build data for study. Each waveform field can be enabled or disabled:

In [84]:
def get_x_y(samples, use_abp, use_ecg, use_eeg):
    # Create X and y, using data from `samples_balanced` and the `use_abp`, `use_ecg`, and `use_eeg` variables
    X = []
    y = []
    for i in range(len(samples)):
        row = samples.iloc[i]
        sample = np.array([])
        if use_abp:
            if len(row['segment_abp']) != 30000:
                print(len(row['segment_abp']))
            sample = np.append(sample, row['segment_abp'])
        if use_ecg:
            if len(row['segment_ecg']) != 30000:
                print(len(row['segment_ecg']))
            sample = np.append(sample, row['segment_ecg'])
        if use_eeg:
            if len(row['segment_eeg']) != 7680:
                print(len(row['segment_eeg']))
            sample = np.append(sample, row['segment_eeg'])
        X.append(sample)
        # Convert the label from boolean to 0 or 1
        y.append(int(row['segment_label']))
    return X, y

KNN¶

Define KNN run. This is configurable to enable or disable different data channels so that we can study them individually or together:

In [85]:
N_NEIGHBORS = 20

def run_knn(samples, use_abp, use_ecg, use_eeg):
    # Get samples
    X,y = get_x_y(samples, use_abp, use_ecg, use_eeg)

    # Split samples into train and val
    knn_X_train, knn_X_test, knn_y_train, knn_y_test = train_test_split(X, y, test_size=0.2, random_state=RANDOM_SEED)

    # Normalize the data
    scaler = StandardScaler()
    scaler.fit(knn_X_train)

    knn_X_train = scaler.transform(knn_X_train)
    knn_X_test = scaler.transform(knn_X_test)

    # Initialize the KNN classifier
    knn = KNeighborsClassifier(n_neighbors=N_NEIGHBORS)

    # Train the KNN classifier
    knn.fit(knn_X_train, knn_y_train)

    # Make predictions on the test set
    knn_y_pred = knn.predict(knn_X_test)

    # Evaluate the KNN classifier
    print(f"ABP: {use_abp}, ECG: {use_ecg}, EEG: {use_eeg}")
    print(f"Confusion matrix:\n{confusion_matrix(knn_y_test, knn_y_pred)}")
    print(f"Classification report:\n{classification_report(knn_y_test, knn_y_pred)}")

Study each waveform independently, then ABP+EEG (which had best results in paper), and ABP+ECG+EEG:

In [86]:
run_knn(samples_balanced, use_abp=True, use_ecg=False, use_eeg=False)
run_knn(samples_balanced, use_abp=False, use_ecg=True, use_eeg=False)
run_knn(samples_balanced, use_abp=False, use_ecg=False, use_eeg=True)
run_knn(samples_balanced, use_abp=True, use_ecg=False, use_eeg=True)
run_knn(samples_balanced, use_abp=True, use_ecg=True, use_eeg=True)
ABP: True, ECG: False, EEG: False
Confusion matrix:
[[48  6]
 [16 30]]
Classification report:
              precision    recall  f1-score   support

           0       0.75      0.89      0.81        54
           1       0.83      0.65      0.73        46

    accuracy                           0.78       100
   macro avg       0.79      0.77      0.77       100
weighted avg       0.79      0.78      0.78       100

ABP: False, ECG: True, EEG: False
Confusion matrix:
[[32 22]
 [21 25]]
Classification report:
              precision    recall  f1-score   support

           0       0.60      0.59      0.60        54
           1       0.53      0.54      0.54        46

    accuracy                           0.57       100
   macro avg       0.57      0.57      0.57       100
weighted avg       0.57      0.57      0.57       100

ABP: False, ECG: False, EEG: True
Confusion matrix:
[[ 2 52]
 [ 0 46]]
Classification report:
              precision    recall  f1-score   support

           0       1.00      0.04      0.07        54
           1       0.47      1.00      0.64        46

    accuracy                           0.48       100
   macro avg       0.73      0.52      0.36       100
weighted avg       0.76      0.48      0.33       100

ABP: True, ECG: False, EEG: True
Confusion matrix:
[[42 12]
 [ 7 39]]
Classification report:
              precision    recall  f1-score   support

           0       0.86      0.78      0.82        54
           1       0.76      0.85      0.80        46

    accuracy                           0.81       100
   macro avg       0.81      0.81      0.81       100
weighted avg       0.81      0.81      0.81       100

ABP: True, ECG: True, EEG: True
Confusion matrix:
[[39 15]
 [ 6 40]]
Classification report:
              precision    recall  f1-score   support

           0       0.87      0.72      0.79        54
           1       0.73      0.87      0.79        46

    accuracy                           0.79       100
   macro avg       0.80      0.80      0.79       100
weighted avg       0.80      0.79      0.79       100

Based on the data above, the ABP data alone is strongly predictive based on the macro average F1-score of 0.90. The ECG and EEG data are weakly predictive with F1 scores of 0.33 and 0.64, respectively. The ABP+EEG data is also strongly predictive with an F1 score of 0.88, and ABP+ECG+EEG data somewhat predictive with an F1 score of 0.79.

Models based on ABP data alone, or ABP+EEG data are expected to train easily with good performance. The other signals appear to mostly add noise and are not strongly predictive. This agrees with the results from the paper.

t-SNE¶

Define t-SNE run. This is configurable to enable or disable different data channels so that we can study them individually or together:

In [87]:
def run_tsne(samples, use_abp, use_ecg, use_eeg):
    # Get samples
    X,y = get_x_y(samples, use_abp, use_ecg, use_eeg)
    
    # Convert X and y to numpy arrays
    X = np.array(X)
    y = np.array(y)

    # Run t-SNE on the samples
    tsne = TSNE(n_components=len(np.unique(y)), random_state=RANDOM_SEED)
    X_tsne = tsne.fit_transform(X)
    
    # Create a scatter plot of the t-SNE representation
    plt.figure(figsize=(16, 9))
    plt.title(f"use_abp={use_abp}, use_ecg={use_ecg}, use_eeg={use_eeg}")
    for i, label in enumerate(set(y)):
        plt.scatter(X_tsne[y == label, 0], X_tsne[y == label, 1], label=label)
    plt.legend()
    plt.show()

Study each waveform independently, then ABP+EEG (which had best results in paper), and ABP+ECG+EEG:

In [88]:
run_tsne(samples_balanced, use_abp=True, use_ecg=False, use_eeg=False)
run_tsne(samples_balanced, use_abp=False, use_ecg=True, use_eeg=False)
run_tsne(samples_balanced, use_abp=False, use_ecg=False, use_eeg=True)
run_tsne(samples_balanced, use_abp=True, use_ecg=False, use_eeg=True)
run_tsne(samples_balanced, use_abp=True, use_ecg=True, use_eeg=True)

Based on the plots above, it appears that ABP alone, ABP+EEG and ABP+ECG+EEG are somewhat separable, though with outliers, and should be trainable by our model. The ECG and EEG data are not easily separable from the other data. This agrees with the results from the paper.

In [89]:
# cleanup
del samples_balanced

Model¶

The model implementation is based on the CNN architecture described in Jo Y-Y et al. (2022). It is designed to handle 1, 2, or 3 signal categories simultaneously, allowing for flexible model configurations based on different combinations of physiological signals:

  • ABP alone
  • EEG alone
  • ECG alone
  • ABP + EEG
  • ABP + ECG
  • EEG + ECG
  • ABP + EEG + ECG

Model Architecture¶

The architecture, as depicted in Figure 2 from the original paper, utilizes a ResNet-based approach tailored for time-series data from different physiological signals. The model architecture is adapted to handle varying input signal frequencies, with specific hyperparameters for each signal type, particularly EEG, due to its distinct characteristics compared to ABP and ECG. A diagram of the model architecture is shown below:

Architecture of the hypotension risk prediction model using multiple waveforms

Each input signal is processed through a sequence of 12 7-layer residual blocks, followed by a flattening process and a linear transformation to produce a 32-dimensional feature vector per signal type. These vectors are then concatenated (if multiple signals are used) and passed through two additional linear layers to produce a single output vector, representing the IOH index. A threshold is determined experimentally in order to minimize the differene between the sensitivity and specificity and is applied to this index to perform binary classification for predicting IOH events.

The hyperparameters for the residual blocks are specified in Supplemental Table 1 from the original paper and vary for different signal type.

A forward pass through the model passes through 85 layers before concatenation, followed by two more linear layers and finally a sigmoid activation layer to produce the prediction measure.

Residual Block Definition¶

Each residual block consists of the following seven layers:

  • Batch normalization
  • ReLU
  • Dropout (0.5)
  • 1D convolution
  • Batch normalization
  • ReLU
  • 1D convolution

Skip connections are included to aid in gradient flow during training, with optional 1D convolution in the skip connection to align dimensions.

Residual Block Hyperparameters¶

The hyperparameters are detailed in Supplemental Table 1 of the original paper. A screenshot of these hyperparameters is provided for reference below:

Supplemental Table 1 from original paper

Note: Please be aware of a transcription error in the original paper's Supplemental Table 1 for the ECG+ABP configuration in Residual Blocks 11 and 12, where the output size should be 469 6 instead of the reported 496 6.

Training Objectives¶

Our model uses binary cross entropy as the loss function and Adam as the optimizer, consistent with the original study. The learning rate is set at 0.0001, and training is configured to run for up to 100 epochs, with early stopping implemented if no improvement in loss is observed over five consecutive epochs.

In [90]:
# First define the residual block which is reused 12x for each data track for each sample.
# Second define the primary model.
class ResidualBlock(nn.Module):
    def __init__(self, in_features: int, out_features: int, in_channels: int, out_channels: int, kernel_size: int, stride: int = 1, size_down: bool = False, ignoreSkipConnection: bool = False) -> None:
        super(ResidualBlock, self).__init__()
        
        self.ignoreSkipConnection = ignoreSkipConnection

        # calculate the appropriate padding required to ensure expected sequence lengths out of each residual block
        padding = int((((stride-1)*in_features)-stride+kernel_size)/2)

        self.size_down = size_down
        self.bn1 = nn.BatchNorm1d(in_channels)
        self.relu = nn.ReLU()
        self.dropout = nn.Dropout(0.5)
        self.conv1 = nn.Conv1d(in_channels, out_channels, kernel_size=kernel_size, stride=1, padding=padding, bias=False)
        self.bn2 = nn.BatchNorm1d(out_channels)
        self.conv2 = nn.Conv1d(out_channels, out_channels, kernel_size=kernel_size, stride=1, padding=padding, bias=False)
        
        self.residualConv = nn.Conv1d(in_channels, out_channels, kernel_size=kernel_size, stride=1, padding=padding, bias=False)

        # unclear where in sequence this should take place. Size down expressed in Supplemental table S1
        if self.size_down:
            pool_padding = (1 if (in_features % 2 > 0) else 0)
            self.downsample = nn.MaxPool1d(kernel_size=2, stride=2, padding = pool_padding)
        
    def forward(self, x: torch.Tensor) -> torch.Tensor:
        identity = x
        
        out = self.bn1(x)
        out = self.relu(out)
        out = self.dropout(out)
        out = self.conv1(out)

        if self.size_down:
            out = self.downsample(out)

        out = self.bn2(out)
        out = self.relu(out)
        out = self.conv2(out)
        
        if not self.ignoreSkipConnection:
          if out.shape != identity.shape:
              # run the residual through a convolution when necessary
              identity = self.residualConv(identity)
            
              outlen = np.prod(out.shape)
              idlen = np.prod(identity.shape)
              # downsample when required
              if idlen > outlen:
                  identity = self.downsample(identity)
              # match dimensions
              identity = identity.reshape(out.shape)

          # add the residual       
          out += identity

        return  out

class HypotensionCNN(nn.Module):
    def __init__(self, useAbp: bool = True, useEeg: bool = False, useEcg: bool = False, device: str = "cpu", nResiduals: int = 12, ignoreSkipConnection: bool = False, useSigmoid: bool = True) -> None:
        assert useAbp or useEeg or useEcg, "At least one data track must be used"
        assert nResiduals > 0 and nResiduals <= 12, "Number of residual blocks must be between 1 and 12"
        super(HypotensionCNN, self).__init__()

        self.device = device

        self.useAbp = useAbp
        self.useEeg = useEeg
        self.useEcg = useEcg
        self.nResiduals = nResiduals
        self.useSigmoid = useSigmoid

        # Size of the concatenated output from the residual blocks
        concatSize = 0

        if useAbp:
          self.abpBlocks = []
          self.abpMultipliers = [1, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6]
          self.abpSizes = [30000, 15000, 15000, 7500, 7500, 3750, 3750, 1875, 1875, 938, 938, 469, 469]
          for i in range(self.nResiduals):
            downsample = i % 2 == 0
            self.abpBlocks.append(ResidualBlock(self.abpSizes[i], self.abpSizes[i+1], self.abpMultipliers[i], self.abpMultipliers[i+1], 15 if i < 6 else 7, 1, downsample, ignoreSkipConnection))
          self.abpResiduals = nn.Sequential(*self.abpBlocks)
          self.abpFc = nn.Linear(self.abpMultipliers[self.nResiduals] * self.abpSizes[self.nResiduals], 32)
          concatSize += 32
        
        if useEcg:
          self.ecgBlocks = []
          self.ecgMultipliers = [1, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6]
          self.ecgSizes = [30000, 15000, 15000, 7500, 7500, 3750, 3750, 1875, 1875, 938, 938, 469, 469]

          for i in range(self.nResiduals):
            downsample = i % 2 == 0
            self.ecgBlocks.append(ResidualBlock(self.ecgSizes[i], self.ecgSizes[i+1], self.ecgMultipliers[i], self.ecgMultipliers[i+1], 15 if i < 6 else 7, 1, downsample, ignoreSkipConnection))
          self.ecgResiduals = nn.Sequential(*self.ecgBlocks)
          self.ecgFc = nn.Linear(self.ecgMultipliers[self.nResiduals] * self.ecgSizes[self.nResiduals], 32)
          concatSize += 32

        if useEeg:
          self.eegBlocks = []
          self.eegMultipliers = [1, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6]
          self.eegSizes = [7680, 3840, 3840, 1920, 1920, 960, 960, 480, 480, 240, 240, 120, 120]

          for i in range(self.nResiduals):
            downsample = i % 2 == 0
            self.eegBlocks.append(ResidualBlock(self.eegSizes[i], self.eegSizes[i+1], self.eegMultipliers[i], self.eegMultipliers[i+1], 7 if i < 6 else 3, 1, downsample, ignoreSkipConnection))
          self.eegResiduals = nn.Sequential(*self.eegBlocks)
          self.eegFc = nn.Linear(self.eegMultipliers[self.nResiduals] * self.eegSizes[self.nResiduals], 32)
          concatSize += 32

        self.fullLinear1 = nn.Linear(concatSize, 16)
        self.fullLinear2 = nn.Linear(16, 1)
        self.sigmoid = nn.Sigmoid()


    def forward(self, abp: torch.Tensor, eeg: torch.Tensor, ecg: torch.Tensor) -> torch.Tensor:
        batchSize = len(abp)

        # conditionally operate ABP, EEG, and ECG networks
        tensors = []
        if self.useAbp:
          self.abpResiduals.to(self.device)
          abp = self.abpResiduals(abp)
          totalLen = np.prod(abp.shape)
          abp = torch.reshape(abp, (batchSize, int(totalLen / batchSize)))
          abp = self.abpFc(abp)
          tensors.append(abp)

        if self.useEeg:
          self.eegResiduals.to(self.device)
          eeg = self.eegResiduals(eeg)
          totalLen = np.prod(eeg.shape)
          eeg = torch.reshape(eeg, (batchSize, int(totalLen / batchSize)))
          eeg = self.eegFc(eeg)
          tensors.append(eeg)
        
        if self.useEcg:
          self.ecgResiduals.to(self.device)
          ecg = self.ecgResiduals(ecg)
          totalLen = np.prod(ecg.shape)
          ecg = torch.reshape(ecg, (batchSize, int(totalLen / batchSize)))
          ecg = self.ecgFc(ecg)
          tensors.append(ecg)

        # concatenate the tensors along dimension 1 if there's more than one, otherwise use the single tensor
        merged = torch.cat(tensors, dim=1) if len(tensors) > 1 else tensors[0]

        totalLen = np.prod(merged.shape)
        merged = torch.reshape(merged, (batchSize, int(totalLen / batchSize)))
        out = self.fullLinear1(merged)
        out = self.fullLinear2(out)
        if self.useSigmoid:
            out = self.sigmoid(out)

        # We should not be seeing NaNs! If we are, there is a problem upstream.
        #out = torch.nan_to_num(out)
        return out

Training¶

As discussed earlier, our model uses binary cross entropy as the loss function and Adam as the optimizer, consistent with the original study. The learning rate is set at 0.0001, and training is configured to run for up to 100 epochs, with early stopping implemented if no improvement in loss is observed over five consecutive epochs.

In [91]:
def train_model_one_iter(model, device, loss_func, optimizer, train_loader):
    model.train()
    train_losses = []
    
    for abp, ecg, eeg, label in tqdm(train_loader):
        batch = len(abp)
        abp = abp.reshape(batch, 1, -1).type(torch.FloatTensor).to(device)
        ecg = ecg.reshape(batch, 1, -1).type(torch.FloatTensor).to(device)
        eeg = eeg.reshape(batch, 1, -1).type(torch.FloatTensor).to(device)
        label = label.type(torch.float).reshape(batch, 1).to(device)

        optimizer.zero_grad()
        mdl = model(abp, eeg, ecg)
        loss = loss_func(torch.nan_to_num(mdl), label)
        loss.backward()
        optimizer.step()
        train_losses.append(loss.cpu().data.numpy())
    return np.mean(train_losses)
In [92]:
def evaluate_model(model, loss_func, val_loader):
    model.eval()
    val_losses = []
    for abp, ecg, eeg, label in tqdm(val_loader):
        batch = len(abp)

        abp = abp.reshape(batch, 1, -1).type(torch.FloatTensor).to(device)
        ecg = ecg.reshape(batch, 1, -1).type(torch.FloatTensor).to(device)
        eeg = eeg.reshape(batch, 1, -1).type(torch.FloatTensor).to(device)
        label = label.type(torch.float).reshape(batch, 1).to(device)

        mdl = model(abp, eeg, ecg)
        loss = loss_func(torch.nan_to_num(mdl), label)
        val_losses.append(loss.cpu().data.numpy())
    return np.mean(val_losses)
In [93]:
def plot_losses(train_losses, val_losses, best_epoch, experimentName):
    print()
    print(f'Plot Validation and Loss Values from Training')
    print(f'  Epoch with best Validation Loss:  {best_epoch:3}, {val_losses[best_epoch]:.4}')

    # Create x-axis values for epochs
    epochs = range(0, len(train_losses))

    plt.figure(figsize=(16, 9))

    # Plot the training and validation losses
    plt.plot(epochs, train_losses, 'b', label='Training Loss')
    plt.plot(epochs, val_losses, 'r', label='Validation Loss')

    # Add a vertical bar at the best_epoch
    plt.axvline(x=best_epoch, color='g', linestyle='--', label='Best Epoch')

    # Shade everything to the right of the best_epoch a light red
    plt.axvspan(best_epoch, max(epochs), facecolor='r', alpha=0.1)

    # Add labels and title
    plt.xlabel('Epochs')
    plt.ylabel('Loss')
    plt.title(experimentName)

    # Add legend
    plt.legend(loc='upper right')

    # Save plot to disk
    plt.savefig(os.path.join(VITAL_RUNS, f'{experimentName}_losses.png'))

    # Show the plot
    plt.show()
In [94]:
def eval_model(model, device, dataloader, loss_func, print_detailed: bool = False):
    model.eval()
    model = model.to(device)
    total_loss = 0
    all_predictions = []
    all_labels = []

    with torch.no_grad():
        for abp, ecg, eeg, label in tqdm(dataloader):
            batch = len(abp)
    
            abp = torch.nan_to_num(abp.reshape(batch, 1, -1)).type(torch.FloatTensor).to(device)
            ecg = torch.nan_to_num(ecg.reshape(batch, 1, -1)).type(torch.FloatTensor).to(device)
            eeg = torch.nan_to_num(eeg.reshape(batch, 1, -1)).type(torch.FloatTensor).to(device)
            label = label.type(torch.float).reshape(batch, 1).to(device)
   
            pred = model(abp, eeg, ecg)
            loss = loss_func(pred, label)
            total_loss += loss.item()

            all_predictions.append(pred.detach().cpu().numpy())
            all_labels.append(label.detach().cpu().numpy())

    # Flatten the lists
    all_predictions = np.concatenate(all_predictions).flatten()
    all_labels = np.concatenate(all_labels).flatten()

    # Calculate AUROC and AUPRC
    # y_true, y_pred
    auroc = roc_auc_score(all_labels, all_predictions)
    precision, recall, _ = precision_recall_curve(all_labels, all_predictions)
    auprc = auc(recall, precision)

    # Determine the optimal threshold, which is argmin(abs(sensitivity - specificity)) per the paper
    thresholds = np.linspace(0, 1, 101) # 0 to 1 in 0.01 steps
    min_diff = float('inf')
    optimal_sensitivity = None
    optimal_specificity = None
    optimal_threshold = None

    for threshold in thresholds:
        all_predictions_binary = (all_predictions > threshold).astype(int)

        tn, fp, fn, tp = confusion_matrix(all_labels, all_predictions_binary).ravel()
        sensitivity = tp / (tp + fn)
        specificity = tn / (tn + fp)
        diff = abs(sensitivity - specificity)

        if diff < min_diff:
            min_diff = diff
            optimal_threshold = threshold
            optimal_sensitivity = sensitivity
            optimal_specificity = specificity

    avg_loss = total_loss / len(dataloader)
    
    # accuracy
    predictions_binary = (all_predictions > optimal_threshold).astype(int)
    accuracy = np.mean(predictions_binary == all_labels)

    if print_detailed:
        print(f"Predictions: {all_predictions}")
        print(f"Labels: {all_labels}")
    print(f"Loss: {avg_loss}")
    print(f"AUROC: {auroc}")
    print(f"AUPRC: {auprc}")
    print(f"Sensitivity: {optimal_sensitivity}")
    print(f"Specificity: {optimal_specificity}")
    print(f"Threshold: {optimal_threshold}")
    print(f"Accuracy:  {accuracy}")

    return all_predictions, all_labels, avg_loss, auroc, auprc, \
        optimal_sensitivity, optimal_specificity, optimal_threshold, accuracy
In [95]:
def print_all_evals(model, models, device, val_loader, test_loader, loss_func, print_detailed: bool = False):
    print()
    print(f'Generate AUROC/AUPRC for Each Intermediate Model')
    print()
    val_aurocs = []
    val_auprcs = []
    val_accs   = []

    test_aurocs = []
    test_auprcs = []
    test_accs   = []

    for mod in models:
        model.load_state_dict(torch.load(mod))
        #model.train(False)
        model.eval()
        print(f'Intermediate Model:')
        print(f'  {mod}')
    
        # validation loop
        print("AUROC/AUPRC on Validation Data")
        all_predictions, all_labels, avg_loss, valid_auroc, valid_auprc, \
        optimal_sensitivity, optimal_specificity, optimal_threshold, valid_accuracy = \
            eval_model(model, device, val_loader, loss_func, print_detailed)

        val_aurocs.append(valid_auroc)
        val_auprcs.append(valid_auprc)
        val_accs.append(valid_accuracy)
        print()
    
        # test loop
        print("AUROC/AUPRC on Test Data")
        all_predictions, all_labels, avg_loss, test_auroc, test_auprc, \
        optimal_sensitivity, optimal_specificity, optimal_threshold, test_accuracy = \
            eval_model(model, device, test_loader, loss_func, print_detailed)

        test_aurocs.append(test_auroc)
        test_auprcs.append(test_auprc)
        test_accs.append(test_accuracy)
        print()
    
    return val_aurocs, val_auprcs, val_accs, test_aurocs, test_auprcs, test_accs
In [116]:
def plot_auroc_auprc(val_losses, val_aurocs, val_auprcs, val_accs, 
                                      test_aurocs, test_auprcs, test_accs, all_models, best_epoch, experimentName):
    print()
    print(f'Plot AUROC/AUPRC for Each Intermediate Model')
    
    # Create x-axis values for epochs
    epochs = range(0, len(val_aurocs))

    # Find model with highest AUROC
    np_test_aurocs = np.array(test_aurocs)
    test_auroc_idx = np.argmax(np_test_aurocs)
    test_accs_idx  = np.argmax(test_accs)

    print(f'  Epoch with best Validation Loss:     {best_epoch:3}, {val_losses[best_epoch]:.4}')
    print(f'  Epoch with best model Test AUROC:    {test_auroc_idx:3}, {np_test_aurocs[test_auroc_idx]:.4}')
    print(f'  Epoch with best model Test Accuracy: {test_accs_idx:3}, {test_accs[test_accs_idx]:.4}')
    #print(f'Best Model on Validation Loss:')
    #print(f'  {all_models[test_auroc_idx]}')
    #print(f'Best Model on Test AUROC:')
    #print(f'  {all_models[best_epoch]}')
    print()

    plt.figure(figsize=(16, 9))

    # Plots
    plt.plot(epochs, val_aurocs, 'C0', label='AUROC - Validation')
    plt.plot(epochs, test_aurocs, 'C1', label='AUROC - Test')

    plt.plot(epochs, val_auprcs, 'C2', label='AUPRC - Validation')
    plt.plot(epochs, test_auprcs, 'C3', label='AUPRC - Test')
    
    plt.plot(epochs, val_accs, 'C4', label='Accuracy - Validation')
    plt.plot(epochs, test_accs, 'C5', label='Accuracy - Test')

    # Add vertical bars
    plt.axvline(x=best_epoch, color='g', linestyle='--', label='Best Epoch - Validation Loss')
    plt.axvline(x=test_auroc_idx, color='maroon', linestyle='--', label='Best Epoch - Test AUROC')
    plt.axvline(x=test_accs_idx, color='violet', linestyle='--', label='Best Epoch - Test Accuracy')

    # Shade everything to the right of the best_model a light red
    plt.axvspan(test_auroc_idx, max(epochs), facecolor='r', alpha=0.1)

    # Add labels and title
    plt.xlabel('Epochs')
    plt.ylabel('AUROC / AUPRC')
    plt.title('Validation and Test AUROC and AUPRC by Model Iteration Across Training')

    # Add legend
    plt.legend(loc='right')

    # Show the plot
    plt.show()

    # Save plot to disk
    plt.savefig(os.path.join(VITAL_RUNS, f'{experimentName}_all_stats.png'))

    return np_test_aurocs, test_auroc_idx
In [97]:
def run_experiment(
    experimentNamePrefix: str = None,
    useAbp: bool = True, 
    useEeg: bool = False, 
    useEcg: bool = False, 
    nResiduals: int = 12, 
    skip_connection: bool = False, 
    batch_size: int = 64, 
    learning_rate: float = 1e-4, 
    weight_decay: float = 0.0, 
    balance_labels: bool = False,
    pos_weight: float = None,
    max_epochs: int = 100, 
    patience: int = 25, 
    device: str = "cpu"
):
    reset_random_state()

    time_start = timer()

    experimentName = ""

    experimentOptions = [experimentNamePrefix, 'ABP', 'EEG', 'ECG', 'SKIPCONNECTION']
    experimentValues = [experimentNamePrefix is not None, useAbp, useEeg, useEcg, skip_connection]
    experimentFlags = [name for name, value in zip(experimentOptions, experimentValues) if value]
    if experimentFlags:
        experimentName = "_".join(experimentFlags)

    experimentName = f"{experimentName}_{nResiduals}_RESIDUAL_BLOCKS_{batch_size}_BATCH_SIZE_{learning_rate:.0e}_LEARNING_RATE"

    if weight_decay is not None and weight_decay != 0.0:
        experimentName = f"{experimentName}_{weight_decay:.0e}_WEIGHT_DECAY"

    predictionWindow = 'ALL' if PREDICTION_WINDOW == 'ALL' else f'{PREDICTION_WINDOW:03}'
    experimentName = f"{experimentName}_{predictionWindow}_MINS"

    maxCases = '_ALL' if MAX_CASES is None else f'{MAX_CASES:04}'
    experimentName = f"{experimentName}_{maxCases}_MAX_CASES"
    
    # Add unique uuid8 suffix to experiment name
    experimentName = f"{experimentName}_{uuid.uuid4().hex[:8]}"

    # default label split based on empirical data
    my_pos_weight = 4.0
    if balance_labels and pos_weight is not None:
        my_pos_weight = pos_weight

    # Fork stdout to file and console
    with ForkedStdout(os.path.join(VITAL_RUNS, f'{experimentName}.log')):
        print(f"Experiment Setup")
        print(f'  name:              {experimentName}')
        print(f'  prediction_window: {predictionWindow}')
        print(f'  max_cases:         {maxCases}')
        print(f'  use_abp:           {useAbp}')
        print(f'  use_eeg:           {useEeg}')
        print(f'  use_ecg:           {useEcg}')
        print(f'  n_residuals:       {nResiduals}')
        print(f'  skip_connection:   {skip_connection}')
        print(f'  batch_size:        {batch_size}')
        print(f'  learning_rate:     {learning_rate}')
        print(f'  weight_decay:      {weight_decay}')
        print(f'  balance_labels:    {balance_labels}')
        if balance_labels:
            print(f'  pos_weight:        {my_pos_weight}')
        print(f'  max_epochs:        {max_epochs}')
        print(f'  patience:          {patience}')
        print(f'  device:            {device}')
        print()

        train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=batch_size, shuffle=True)
        val_loader = torch.utils.data.DataLoader(val_dataset, batch_size=batch_size, shuffle=True)
        test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=batch_size, shuffle=False)

        # Disable final sigmoid activation for BCEWithLogitsLoss
        model = HypotensionCNN(useAbp, useEeg, useEcg, device, nResiduals, skip_connection, useSigmoid=(not balance_labels))
        model = model.to(device)
    
        if balance_labels:
            # Only the weight for the positive class
            loss_func = nn.BCEWithLogitsLoss(pos_weight=torch.tensor([my_pos_weight]).to(device))
        else:
            loss_func = nn.BCELoss()
        optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate, weight_decay=weight_decay)

    
        print(f'Model Architecture')
        print(model)
        print()

        print(f'Training Loop')
        # Training loop
        best_epoch = 0
        train_losses = []
        val_losses = []
        best_loss = float('inf')
        no_improve_epochs = 0
        model_path = os.path.join(VITAL_MODELS, f"{experimentName}.model")

        all_models = []

        for i in range(max_epochs):
            # Train the model and get the training loss
            train_loss = train_model_one_iter(model, device, loss_func, optimizer, train_loader)
            train_losses.append(train_loss)
            # Calculate validate loss
            val_loss = evaluate_model(model, loss_func, val_loader)
            val_losses.append(val_loss)
            print(f"[{datetime.now()}] Completed epoch {i} with training loss {train_loss:.8f}, validation loss {val_loss:.8f}")

            # Save all intermediary models.
            tmp_model_path = os.path.join(VITAL_MODELS, f"{experimentName}_{i:04d}.model")
            torch.save(model.state_dict(), tmp_model_path)
            all_models.append(tmp_model_path)
  
            # Check if validation loss has improved
            if val_loss < best_loss:
                best_epoch = i
                best_loss = val_loss
                no_improve_epochs = 0
                torch.save(model.state_dict(), model_path)
                print(f"Validation loss improved to {val_loss:.8f}. Model saved.")
            else:
                no_improve_epochs += 1
                print(f"No improvement in validation loss. {no_improve_epochs} epochs without improvement.")

            # exit early if no improvement in loss over last 'patience' epochs
            if no_improve_epochs >= patience:
                print("Early stopping due to no improvement in validation loss.")
                break

        # Load best model from disk
        #print()
        #if os.path.exists(model_path):
        #    model.load_state_dict(torch.load(model_path))
        #    print(f"Loaded best model from disk from epoch {best_epoch}.")
        #else:
        #    print("No saved model found for f{experimentName}.")

        #model.train(False)

        # Plot the training and validation losses across all training epochs.
        plot_losses(train_losses, val_losses, best_epoch, experimentName)

        # Generate AUROC/AUPRC for each intermediate model generated across training epochs.
        val_aurocs, val_auprcs, val_accs, test_aurocs, test_auprcs, test_accs = \
            print_all_evals(model, all_models, device, val_loader, test_loader, loss_func, print_detailed=False)

        # Find model with highest AUROC. Plot AUROC/AUPRC across all epochs.
        np_test_aurocs, test_auroc_idx = plot_auroc_auprc(val_losses, val_aurocs, val_auprcs, val_accs, \
                                        test_aurocs, test_auprcs, test_accs, all_models, best_epoch, experimentName)

        ## AUROC / AUPRC - Model with Best Validation Loss
        best_model_val_loss = all_models[best_epoch]
    
        print(f'AUROC/AUPRC Plots - Best Model Based on Validation Loss')
        print(f'  Epoch with best Validation Loss:  {best_epoch:3}, {val_losses[best_epoch]:.4}')
        print(f'  Best Model Based on Validation Loss:')
        print(f'    {best_model_val_loss}')
        print()
        print(f'Generate Stats Based on Test Data')
        model.load_state_dict(torch.load(best_model_val_loss))
        #model.train(False)
        model.eval()
    
        best_model_val_test_predictions, best_model_val_test_labels, test_loss, \
            best_model_val_test_auroc, best_model_val_test_auprc, test_sensitivity, test_specificity, \
            best_model_val_test_threshold, best_model_val_accuracy = \
                eval_model(model, device, test_loader, loss_func, print_detailed=False)

        # y_test, y_pred
        display = RocCurveDisplay.from_predictions(
            best_model_val_test_labels,
            best_model_val_test_predictions,
            plot_chance_level=True
        )
        # Save plot to disk and show
        plt.savefig(os.path.join(VITAL_RUNS, f'{experimentName}_val_auroc.png'))
        plt.show()

        print(f'best_model_val_test_auroc: {best_model_val_test_auroc}')

        best_model_val_test_predictions_binary = \
        (best_model_val_test_predictions > best_model_val_test_threshold).astype(int)

        # y_test, y_pred
        display = PrecisionRecallDisplay.from_predictions(
            best_model_val_test_labels, 
            best_model_val_test_predictions_binary,
            plot_chance_level=True
        )
        # Save plot to disk and show
        plt.savefig(os.path.join(VITAL_RUNS, f'{experimentName}_val_auprc.png'))
        plt.show()

        print(f'best_model_val_test_auprc: {best_model_val_test_auprc}')
        print()

        ## AUROC / AUPRC - Model with Best AUROC
        # Find model with highest AUROC
        best_model_auroc = all_models[test_auroc_idx]

        print(f'AUROC/AUPRC Plots - Best Model Based on Model AUROC')
        print(f'  Epoch with best model Test AUROC: {test_auroc_idx:3}, {np_test_aurocs[test_auroc_idx]:.4}')
        print(f'  Best Model Based on Model AUROC:')
        print(f'    {best_model_auroc}')
        print()
        print(f'Generate Stats Based on Test Data')
        model.load_state_dict(torch.load(best_model_auroc))
        #model.train(False)
        model.eval()
    
        best_model_auroc_test_predictions, best_model_auroc_test_labels, test_loss, \
            best_model_auroc_test_auroc, best_model_auroc_test_auprc, test_sensitivity, test_specificity, \
            best_model_auroc_test_threshold, best_model_auroc_accuracy = \
                eval_model(model, device, test_loader, loss_func, print_detailed=False)

        # y_test, y_pred
        display = RocCurveDisplay.from_predictions(
            best_model_auroc_test_labels,
            best_model_auroc_test_predictions,
            plot_chance_level=True
        )
        # Save plot to disk and show
        plt.savefig(os.path.join(VITAL_RUNS, f'{experimentName}_auroc_auroc.png'))
        plt.show()

        print(f'best_model_auroc_test_auroc: {best_model_auroc_test_auroc}')

        best_model_auroc_test_predictions_binary = \
            (best_model_auroc_test_predictions > best_model_auroc_test_threshold).astype(int)

        # y_test, y_pred
        display = PrecisionRecallDisplay.from_predictions(
            best_model_auroc_test_labels, 
            best_model_auroc_test_predictions_binary,
            plot_chance_level=True
        )
        # Save plot to disk and show
        plt.savefig(os.path.join(VITAL_RUNS, f'{experimentName}_auroc_auprc.png'))
        plt.show()

        print(f"best_model_auroc_test_auprc: {best_model_auroc_test_auprc}")
        print()
        
        time_delta = np.round(timer() - time_start, 3)
        print(f'Total Processing Time: {time_delta:.4f} sec')

SPLITS¶

In [98]:
print('Time to experiment!')
Time to experiment!
In [99]:
MULTI_RUN = True

ABP, EEG, and ECG Splits¶

In [100]:
RUN_ME = True

if RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=True, 
        useEeg=True, 
        useEcg=True,
        nResiduals=12, 
        skip_connection=False,
        batch_size=64,
        learning_rate=1e-4,
        weight_decay=0.0,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
Experiment Setup
  name:              ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79
  prediction_window: 003
  max_cases:         _ALL
  use_abp:           True
  use_eeg:           True
  use_ecg:           True
  n_residuals:       12
  skip_connection:   False
  batch_size:        64
  learning_rate:     0.0001
  weight_decay:      0.0
  balance_labels:    False
  max_epochs:        200
  patience:          20
  device:            mps

Model Architecture
HypotensionCNN(
  (abpResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
  )
  (abpFc): Linear(in_features=2814, out_features=32, bias=True)
  (ecgResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
  )
  (ecgFc): Linear(in_features=2814, out_features=32, bias=True)
  (eegResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
    )
  )
  (eegFc): Linear(in_features=720, out_features=32, bias=True)
  (fullLinear1): Linear(in_features=96, out_features=16, bias=True)
  (fullLinear2): Linear(in_features=16, out_features=1, bias=True)
  (sigmoid): Sigmoid()
)

Training Loop
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:03<00:00,  2.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.38it/s]
[2024-05-02 23:31:09.072831] Completed epoch 0 with training loss 0.47481909, validation loss 0.60535330
Validation loss improved to 0.60535330. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:02<00:00,  2.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.67it/s]
[2024-05-02 23:32:18.369072] Completed epoch 1 with training loss 0.43297315, validation loss 0.65022475
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:01<00:00,  3.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.55it/s]
[2024-05-02 23:33:26.885763] Completed epoch 2 with training loss 0.42952132, validation loss 0.57201713
Validation loss improved to 0.57201713. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:03<00:00,  2.89it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.35it/s]
[2024-05-02 23:34:38.054872] Completed epoch 3 with training loss 0.42042181, validation loss 0.56778467
Validation loss improved to 0.56778467. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.04it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.74it/s]
[2024-05-02 23:35:45.640670] Completed epoch 4 with training loss 0.41635305, validation loss 0.66481251
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:01<00:00,  3.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.60it/s]
[2024-05-02 23:36:53.970329] Completed epoch 5 with training loss 0.41293740, validation loss 0.57500648
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:01<00:00,  3.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.58it/s]
[2024-05-02 23:38:02.150152] Completed epoch 6 with training loss 0.40537101, validation loss 0.57109928
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.04it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.63it/s]
[2024-05-02 23:39:09.762936] Completed epoch 7 with training loss 0.40467843, validation loss 0.59800386
No improvement in validation loss. 4 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.05it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.65it/s]
[2024-05-02 23:40:17.138292] Completed epoch 8 with training loss 0.40542811, validation loss 0.57643890
No improvement in validation loss. 5 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.04it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.64it/s]
[2024-05-02 23:41:24.763250] Completed epoch 9 with training loss 0.39901790, validation loss 0.62023044
No improvement in validation loss. 6 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.59it/s]
[2024-05-02 23:42:32.690440] Completed epoch 10 with training loss 0.39567798, validation loss 0.59012532
No improvement in validation loss. 7 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.62it/s]
[2024-05-02 23:43:40.616320] Completed epoch 11 with training loss 0.39088970, validation loss 0.60246170
No improvement in validation loss. 8 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:01<00:00,  2.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.62it/s]
[2024-05-02 23:44:49.309998] Completed epoch 12 with training loss 0.39158157, validation loss 0.55773354
Validation loss improved to 0.55773354. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:01<00:00,  3.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.62it/s]
[2024-05-02 23:45:57.484032] Completed epoch 13 with training loss 0.38664550, validation loss 0.60039526
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.04it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.64it/s]
[2024-05-02 23:47:05.049489] Completed epoch 14 with training loss 0.38458440, validation loss 0.55703753
Validation loss improved to 0.55703753. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.62it/s]
[2024-05-02 23:48:13.050413] Completed epoch 15 with training loss 0.37509695, validation loss 0.63511789
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.64it/s]
[2024-05-02 23:49:20.986397] Completed epoch 16 with training loss 0.37293932, validation loss 0.57011026
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.60it/s]
[2024-05-02 23:50:28.956311] Completed epoch 17 with training loss 0.37224159, validation loss 0.54429889
Validation loss improved to 0.54429889. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.03it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.62it/s]
[2024-05-02 23:51:36.882530] Completed epoch 18 with training loss 0.36936954, validation loss 0.56282192
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.61it/s]
[2024-05-02 23:52:44.894509] Completed epoch 19 with training loss 0.36262685, validation loss 0.57045972
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.62it/s]
[2024-05-02 23:53:52.761859] Completed epoch 20 with training loss 0.36142203, validation loss 0.59218496
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.49it/s]
[2024-05-02 23:55:00.929812] Completed epoch 21 with training loss 0.35916677, validation loss 0.65198028
No improvement in validation loss. 4 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.03it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.63it/s]
[2024-05-02 23:56:08.744206] Completed epoch 22 with training loss 0.35645643, validation loss 0.60547340
No improvement in validation loss. 5 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.60it/s]
[2024-05-02 23:57:16.733103] Completed epoch 23 with training loss 0.35295868, validation loss 0.63072097
No improvement in validation loss. 6 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.63it/s]
[2024-05-02 23:58:24.626772] Completed epoch 24 with training loss 0.34837863, validation loss 0.59863806
No improvement in validation loss. 7 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.03it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.63it/s]
[2024-05-02 23:59:32.427011] Completed epoch 25 with training loss 0.34487155, validation loss 0.62431896
No improvement in validation loss. 8 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.60it/s]
[2024-05-03 00:00:40.328898] Completed epoch 26 with training loss 0.34100905, validation loss 0.57189262
No improvement in validation loss. 9 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.03it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.61it/s]
[2024-05-03 00:01:48.155430] Completed epoch 27 with training loss 0.34366468, validation loss 0.64870095
No improvement in validation loss. 10 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.62it/s]
[2024-05-03 00:02:56.100725] Completed epoch 28 with training loss 0.33807331, validation loss 0.60556692
No improvement in validation loss. 11 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.62it/s]
[2024-05-03 00:04:04.001905] Completed epoch 29 with training loss 0.33530027, validation loss 0.60582250
No improvement in validation loss. 12 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.63it/s]
[2024-05-03 00:05:11.956821] Completed epoch 30 with training loss 0.32994184, validation loss 0.61924994
No improvement in validation loss. 13 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.61it/s]
[2024-05-03 00:06:19.896956] Completed epoch 31 with training loss 0.32990560, validation loss 0.64434659
No improvement in validation loss. 14 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.63it/s]
[2024-05-03 00:07:27.812455] Completed epoch 32 with training loss 0.32763043, validation loss 0.63745141
No improvement in validation loss. 15 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.57it/s]
[2024-05-03 00:08:35.841874] Completed epoch 33 with training loss 0.32007957, validation loss 0.65961647
No improvement in validation loss. 16 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.62it/s]
[2024-05-03 00:09:43.693368] Completed epoch 34 with training loss 0.32328573, validation loss 0.72489840
No improvement in validation loss. 17 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.63it/s]
[2024-05-03 00:10:51.702483] Completed epoch 35 with training loss 0.31708381, validation loss 0.70516616
No improvement in validation loss. 18 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.03it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.62it/s]
[2024-05-03 00:11:59.531775] Completed epoch 36 with training loss 0.31168833, validation loss 0.67210662
No improvement in validation loss. 19 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:01<00:00,  3.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.62it/s]
[2024-05-03 00:13:07.605477] Completed epoch 37 with training loss 0.31048423, validation loss 0.69868982
No improvement in validation loss. 20 epochs without improvement.
Early stopping due to no improvement in validation loss.

Plot Validation and Loss Values from Training
  Epoch with best Validation Loss:   17, 0.5443
Generate AUROC/AUPRC for Each Intermediate Model

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0000.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.31it/s]
Loss: 0.6068063611164689
AUROC: 0.8386605457864211
AUPRC: 0.6944629478928712
Sensitivity: 0.7681895093062606
Specificity: 0.7630098452883263
Threshold: 0.12
Accuracy:  0.7645305514157973

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:21<00:00,  4.40it/s]
Loss: 0.5702267741003344
AUROC: 0.829420414830706
AUPRC: 0.6769661800452601
Sensitivity: 0.7381864623243933
Specificity: 0.7733302836230558
Threshold: 0.12
Accuracy:  0.7640619737285281

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0001.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.52it/s]
Loss: 0.6492133103311062
AUROC: 0.8397933369982462
AUPRC: 0.6927660816109983
Sensitivity: 0.7715736040609137
Specificity: 0.7679324894514767
Threshold: 0.09
Accuracy:  0.7690014903129657

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.55it/s]
Loss: 0.6065289046495191
AUROC: 0.8322738219179524
AUPRC: 0.6797827493803628
Sensitivity: 0.7420178799489144
Specificity: 0.77516010978957
Threshold: 0.09
Accuracy:  0.7664196699225329

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0002.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.54it/s]
Loss: 0.5726570980623364
AUROC: 0.8381869629058476
AUPRC: 0.6790673598782644
Sensitivity: 0.7749576988155669
Specificity: 0.7531645569620253
Threshold: 0.13
Accuracy:  0.7595628415300546

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.52it/s]
Loss: 0.5336263287131504
AUROC: 0.8310841720036596
AUPRC: 0.6697017359232138
Sensitivity: 0.7618135376756067
Specificity: 0.755946935041171
Threshold: 0.13
Accuracy:  0.757494105759515

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0003.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.53it/s]
Loss: 0.5730926347896457
AUROC: 0.8351764988660189
AUPRC: 0.666613568282154
Sensitivity: 0.7428087986463621
Specificity: 0.7721518987341772
Threshold: 0.13
Accuracy:  0.7635370094386488

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.54it/s]
Loss: 0.5347855552550285
AUROC: 0.8284354664946676
AUPRC: 0.6549186422100586
Sensitivity: 0.7624521072796935
Specificity: 0.7495425434583715
Threshold: 0.12
Accuracy:  0.7529471202425059

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0004.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.55it/s]
Loss: 0.6681379871442914
AUROC: 0.834562506990702
AUPRC: 0.6666271073336981
Sensitivity: 0.7614213197969543
Specificity: 0.7566807313642757
Threshold: 0.07
Accuracy:  0.7580725285643318

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.53it/s]
Loss: 0.6255476963455959
AUROC: 0.8270461540349068
AUPRC: 0.6497631497340256
Sensitivity: 0.7445721583652618
Specificity: 0.7628087831655993
Threshold: 0.07
Accuracy:  0.757999326372516

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0005.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.54it/s]
Loss: 0.5788304703310132
AUROC: 0.8291305827449245
AUPRC: 0.6505235512083195
Sensitivity: 0.766497461928934
Specificity: 0.7426160337552743
Threshold: 0.12
Accuracy:  0.7496274217585693

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.56it/s]
Loss: 0.5409955930325293
AUROC: 0.8202372522694636
AUPRC: 0.6175566244136327
Sensitivity: 0.7503192848020435
Specificity: 0.7527447392497713
Threshold: 0.12
Accuracy:  0.7521050858875042

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0006.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.54it/s]
Loss: 0.5662019839510322
AUROC: 0.8285487183514555
AUPRC: 0.6550608830152879
Sensitivity: 0.7529610829103215
Specificity: 0.7538677918424754
Threshold: 0.13
Accuracy:  0.7536015896671634

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.54it/s]
Loss: 0.5357068421379212
AUROC: 0.8188536361076348
AUPRC: 0.6190797155114698
Sensitivity: 0.756066411238825
Specificity: 0.7406221408966148
Threshold: 0.12
Accuracy:  0.7446951835634894

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0007.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.48it/s]
Loss: 0.5949602937325835
AUROC: 0.827752670745667
AUPRC: 0.6504971740986674
Sensitivity: 0.7428087986463621
Specificity: 0.7573839662447257
Threshold: 0.11
Accuracy:  0.7531048186785891

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.54it/s]
Loss: 0.5636371354902944
AUROC: 0.8175728454264277
AUPRC: 0.6089900941539816
Sensitivity: 0.7547892720306514
Specificity: 0.7419945105215004
Threshold: 0.1
Accuracy:  0.7453688110474908

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0008.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.56it/s]
Loss: 0.5709957033395767
AUROC: 0.8256084588089985
AUPRC: 0.6445164019812
Sensitivity: 0.739424703891709
Specificity: 0.7609001406469761
Threshold: 0.13
Accuracy:  0.754595131644312

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.53it/s]
Loss: 0.5441411565388402
AUROC: 0.8151243136691286
AUPRC: 0.6017718073026687
Sensitivity: 0.7388250319284803
Specificity: 0.7511436413540714
Threshold: 0.12
Accuracy:  0.7478949141124958

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0009.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.54it/s]
Loss: 0.6171536790207028
AUROC: 0.8243971337526566
AUPRC: 0.644321909951918
Sensitivity: 0.7428087986463621
Specificity: 0.7559774964838256
Threshold: 0.1
Accuracy:  0.7521112767014406

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.54it/s]
Loss: 0.5831253732083946
AUROC: 0.8140437697690751
AUPRC: 0.5976791330213114
Sensitivity: 0.7445721583652618
Specificity: 0.7381061299176578
Threshold: 0.09
Accuracy:  0.7398113843044796

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0010.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.55it/s]
Loss: 0.5925626549869776
AUROC: 0.8216543987282277
AUPRC: 0.6433590979978145
Sensitivity: 0.7495769881556683
Specificity: 0.7468354430379747
Threshold: 0.12
Accuracy:  0.7476403378042722

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.52it/s]
Loss: 0.5562994800588136
AUROC: 0.8099075271757229
AUPRC: 0.5932066371699509
Sensitivity: 0.7458492975734355
Specificity: 0.7339890210430009
Threshold: 0.11
Accuracy:  0.7371168743684743

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0011.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.56it/s]
Loss: 0.5933111440390348
AUROC: 0.8191496450508209
AUPRC: 0.6389152037370701
Sensitivity: 0.751269035532995
Specificity: 0.7383966244725738
Threshold: 0.11
Accuracy:  0.7421758569299552

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.55it/s]
Loss: 0.5663791467105189
AUROC: 0.8078694940168424
AUPRC: 0.5858697026368058
Sensitivity: 0.7209450830140486
Specificity: 0.7463403476669717
Threshold: 0.11
Accuracy:  0.7396429774334793

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0012.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.55it/s]
Loss: 0.5542797362431884
AUROC: 0.8026718165830162
AUPRC: 0.5965134380764707
Sensitivity: 0.7309644670050761
Specificity: 0.7313642756680732
Threshold: 0.23
Accuracy:  0.7312468951813215

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.53it/s]
Loss: 0.4915334338782936
AUROC: 0.7919297918134559
AUPRC: 0.5406325307127114
Sensitivity: 0.7196679438058748
Specificity: 0.7278133577310155
Threshold: 0.22
Accuracy:  0.7256652071404514

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0013.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.55it/s]
Loss: 0.6069082142785192
AUROC: 0.8119959257593389
AUPRC: 0.6223603760917489
Sensitivity: 0.7326565143824028
Specificity: 0.7538677918424754
Threshold: 0.12
Accuracy:  0.7476403378042722

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.56it/s]
Loss: 0.5690863359999913
AUROC: 0.7997982049942803
AUPRC: 0.568435537571603
Sensitivity: 0.7203065134099617
Specificity: 0.734903934126258
Threshold: 0.11
Accuracy:  0.7310542270124621

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0014.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.55it/s]
Loss: 0.5553839234635234
AUROC: 0.8055264028405454
AUPRC: 0.6116171514721386
Sensitivity: 0.7360406091370558
Specificity: 0.7419127988748242
Threshold: 0.16
Accuracy:  0.7401887729756582

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.51it/s]
Loss: 0.5268583254468057
AUROC: 0.7936508771130345
AUPRC: 0.5503160132772373
Sensitivity: 0.7164750957854407
Specificity: 0.7289569990850869
Threshold: 0.15
Accuracy:  0.7256652071404514

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0015.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.55it/s]
Loss: 0.6349285123869777
AUROC: 0.8165389896739893
AUPRC: 0.6330040386626766
Sensitivity: 0.751269035532995
Specificity: 0.740506329113924
Threshold: 0.09
Accuracy:  0.7436661698956781

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.54it/s]
Loss: 0.6045385158510619
AUROC: 0.8038430147028752
AUPRC: 0.5754407009719035
Sensitivity: 0.7452107279693486
Specificity: 0.7259835315645013
Threshold: 0.08
Accuracy:  0.7310542270124621

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0016.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.52it/s]
Loss: 0.574291069060564
AUROC: 0.8038890911730339
AUPRC: 0.6103987895529548
Sensitivity: 0.7377326565143824
Specificity: 0.7306610407876231
Threshold: 0.14
Accuracy:  0.7327372081470442

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.52it/s]
Loss: 0.5428936511919062
AUROC: 0.7926121060644834
AUPRC: 0.5484276669572172
Sensitivity: 0.7222222222222222
Specificity: 0.7214089661482159
Threshold: 0.13
Accuracy:  0.7216234422364433

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0017.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.55it/s]
Loss: 0.5467531820759177
AUROC: 0.7872184978141413
AUPRC: 0.5816599101395723
Sensitivity: 0.7157360406091371
Specificity: 0.7285513361462729
Threshold: 0.19
Accuracy:  0.7247888723298559

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.54it/s]
Loss: 0.5182698178355412
AUROC: 0.7767853074072907
AUPRC: 0.520568938411387
Sensitivity: 0.7037037037037037
Specificity: 0.716376944190302
Threshold: 0.18
Accuracy:  0.7130346918154261

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0018.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.54it/s]
Loss: 0.5701111080124974
AUROC: 0.8024814315053986
AUPRC: 0.607530912194093
Sensitivity: 0.7478849407783418
Specificity: 0.7327707454289732
Threshold: 0.14
Accuracy:  0.7372081470442127

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.52it/s]
Loss: 0.5375698971491988
AUROC: 0.79480152929533
AUPRC: 0.5539175433662229
Sensitivity: 0.7318007662835249
Specificity: 0.7209515096065874
Threshold: 0.13
Accuracy:  0.7238127315594476

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0019.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.55it/s]
Loss: 0.5697640180587769
AUROC: 0.7999612090404356
AUPRC: 0.6052724517929834
Sensitivity: 0.727580372250423
Specificity: 0.739803094233474
Threshold: 0.15
Accuracy:  0.736214605067064

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.57it/s]
Loss: 0.5371375431617101
AUROC: 0.7926660748359173
AUPRC: 0.5491588694764727
Sensitivity: 0.7145593869731801
Specificity: 0.7339890210430009
Threshold: 0.14
Accuracy:  0.7288649376894577

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0020.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.53it/s]
Loss: 0.583566059358418
AUROC: 0.7995185637349744
AUPRC: 0.6045454092022442
Sensitivity: 0.727580372250423
Specificity: 0.7383966244725738
Threshold: 0.13
Accuracy:  0.7352210630899155

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.53it/s]
Loss: 0.5513020390143959
AUROC: 0.7929389859304362
AUPRC: 0.5548190044045058
Sensitivity: 0.7196679438058748
Specificity: 0.7307868252516011
Threshold: 0.12
Accuracy:  0.7278544964634557

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0021.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.54it/s]
Loss: 0.6438830941915512
AUROC: 0.7969162377052886
AUPRC: 0.6017175266252766
Sensitivity: 0.7326565143824028
Specificity: 0.7285513361462729
Threshold: 0.09
Accuracy:  0.7297565822155986

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.54it/s]
Loss: 0.6061908391214186
AUROC: 0.7907140703817046
AUPRC: 0.5555549041126624
Sensitivity: 0.7279693486590039
Specificity: 0.7161482159194876
Threshold: 0.08
Accuracy:  0.7192657460424385

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0022.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.53it/s]
Loss: 0.6054506842046976
AUROC: 0.789970752092451
AUPRC: 0.5918026211898156
Sensitivity: 0.7106598984771574
Specificity: 0.7341772151898734
Threshold: 0.12
Accuracy:  0.7272727272727273

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.52it/s]
Loss: 0.5687462192389273
AUROC: 0.7852498600755533
AUPRC: 0.5403681058336371
Sensitivity: 0.7120051085568327
Specificity: 0.7232387923147301
Threshold: 0.11
Accuracy:  0.7202761872684406

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0023.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.52it/s]
Loss: 0.6256313696503639
AUROC: 0.7964628832392118
AUPRC: 0.5988439740988627
Sensitivity: 0.7225042301184433
Specificity: 0.7412095639943741
Threshold: 0.1
Accuracy:  0.7357178340784898

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.55it/s]
Loss: 0.5877696873359782
AUROC: 0.792888303484732
AUPRC: 0.5548422873496834
Sensitivity: 0.7203065134099617
Specificity: 0.7241537053979872
Threshold: 0.09
Accuracy:  0.7231391040754462

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0024.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.53it/s]
Loss: 0.5966295413672924
AUROC: 0.7951099592813915
AUPRC: 0.5946437203338238
Sensitivity: 0.7208121827411168
Specificity: 0.7383966244725738
Threshold: 0.12
Accuracy:  0.7332339791356185

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.53it/s]
Loss: 0.5639482146950179
AUROC: 0.7911542919706153
AUPRC: 0.5506239113131235
Sensitivity: 0.7183908045977011
Specificity: 0.7312442817932296
Threshold: 0.11
Accuracy:  0.7278544964634557

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0025.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.54it/s]
Loss: 0.6211370779201388
AUROC: 0.7834625572047663
AUPRC: 0.5776228576617177
Sensitivity: 0.7089678510998308
Specificity: 0.7313642756680732
Threshold: 0.11
Accuracy:  0.7247888723298559

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.54it/s]
Loss: 0.586300979698858
AUROC: 0.7800986540378281
AUPRC: 0.5323238383715438
Sensitivity: 0.7100893997445722
Specificity: 0.7202653247941445
Threshold: 0.1
Accuracy:  0.7175816773324352

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0026.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.54it/s]
Loss: 0.5707425894215703
AUROC: 0.7885166860621465
AUPRC: 0.5802837261140817
Sensitivity: 0.7241962774957699
Specificity: 0.7285513361462729
Threshold: 0.15
Accuracy:  0.7272727272727273

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.53it/s]
Loss: 0.5373387128435155
AUROC: 0.7852551912261821
AUPRC: 0.5398938005469665
Sensitivity: 0.7203065134099617
Specificity: 0.7252973467520586
Threshold: 0.14
Accuracy:  0.723981138430448

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0027.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.51it/s]
Loss: 0.6492645563557744
AUROC: 0.7772066225449249
AUPRC: 0.568561359247153
Sensitivity: 0.7123519458544839
Specificity: 0.7060478199718706
Threshold: 0.09
Accuracy:  0.7078986587183308

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.55it/s]
Loss: 0.6112937311972341
AUROC: 0.7731910894710214
AUPRC: 0.5182873016606615
Sensitivity: 0.6934865900383141
Specificity: 0.722323879231473
Threshold: 0.09
Accuracy:  0.7147187605254295

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0028.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.51it/s]
Loss: 0.6102642118930817
AUROC: 0.7706895033567269
AUPRC: 0.5572566599787737
Sensitivity: 0.6971235194585449
Specificity: 0.7011251758087201
Threshold: 0.13
Accuracy:  0.6999503229011426

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.51it/s]
Loss: 0.5668915067949603
AUROC: 0.7706742021385362
AUPRC: 0.5121706656240965
Sensitivity: 0.7132822477650064
Specificity: 0.7111161939615737
Threshold: 0.12
Accuracy:  0.7116874368474234

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0029.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.54it/s]
Loss: 0.6016536355018616
AUROC: 0.769190220870488
AUPRC: 0.5546967244830416
Sensitivity: 0.6988155668358714
Specificity: 0.6969057665260197
Threshold: 0.13
Accuracy:  0.6974664679582713

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.55it/s]
Loss: 0.5669272993841479
AUROC: 0.7690196466776269
AUPRC: 0.5102817152302109
Sensitivity: 0.7164750957854407
Specificity: 0.7031107044830741
Threshold: 0.12
Accuracy:  0.7066352307174133

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0030.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.55it/s]
Loss: 0.6281019542366266
AUROC: 0.7694127334299538
AUPRC: 0.5528199268252343
Sensitivity: 0.6988155668358714
Specificity: 0.69901547116737
Threshold: 0.12
Accuracy:  0.698956780923994

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.53it/s]
Loss: 0.5786988286561864
AUROC: 0.7716869746990893
AUPRC: 0.5165959090863764
Sensitivity: 0.7171136653895275
Specificity: 0.7028819762122598
Threshold: 0.11
Accuracy:  0.7066352307174133

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0031.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.54it/s]
Loss: 0.6392010189592838
AUROC: 0.7511595641133648
AUPRC: 0.5296909129055696
Sensitivity: 0.6785109983079526
Specificity: 0.6969057665260197
Threshold: 0.12
Accuracy:  0.6915052160953801

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.53it/s]
Loss: 0.5938641650061454
AUROC: 0.7559714729399557
AUPRC: 0.49242427438425224
Sensitivity: 0.6966794380587484
Specificity: 0.7010521500457456
Threshold: 0.11
Accuracy:  0.6998989558773998

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0032.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.52it/s]
Loss: 0.6351959696039557
AUROC: 0.7705788420303618
AUPRC: 0.5559373689465285
Sensitivity: 0.700507614213198
Specificity: 0.6954992967651196
Threshold: 0.11
Accuracy:  0.696969696969697

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.53it/s]
Loss: 0.5856901298287094
AUROC: 0.7730600746185816
AUPRC: 0.5201955267210607
Sensitivity: 0.7279693486590039
Specificity: 0.7042543458371455
Threshold: 0.1
Accuracy:  0.710508588750421

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0033.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.54it/s]
Loss: 0.6609095279127359
AUROC: 0.780883434356415
AUPRC: 0.5680409569179741
Sensitivity: 0.7123519458544839
Specificity: 0.7130801687763713
Threshold: 0.09
Accuracy:  0.7128663686040735

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.55it/s]
Loss: 0.6095739431599135
AUROC: 0.7831414995460488
AUPRC: 0.5373225165623394
Sensitivity: 0.7292464878671775
Specificity: 0.7120311070448307
Threshold: 0.08
Accuracy:  0.7165712361064331

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0034.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.52it/s]
Loss: 0.725108465179801
AUROC: 0.7565046251674795
AUPRC: 0.5374763800080463
Sensitivity: 0.6937394247038917
Specificity: 0.689873417721519
Threshold: 0.07
Accuracy:  0.6910084451068058

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.52it/s]
Loss: 0.6654992585861554
AUROC: 0.7599523818704657
AUPRC: 0.49829800780535327
Sensitivity: 0.6845466155810983
Specificity: 0.7136322049405307
Threshold: 0.07
Accuracy:  0.705961603233412

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0035.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.54it/s]
Loss: 0.7105507701635361
AUROC: 0.7836654363031025
AUPRC: 0.5757916300593323
Sensitivity: 0.7191201353637902
Specificity: 0.7025316455696202
Threshold: 0.06
Accuracy:  0.7074018877297565

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.52it/s]
Loss: 0.6586075896216977
AUROC: 0.7851812123825248
AUPRC: 0.5458900916871022
Sensitivity: 0.719029374201788
Specificity: 0.7236962488563586
Threshold: 0.06
Accuracy:  0.7224654765914449

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0036.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.54it/s]
Loss: 0.6736438851803541
AUROC: 0.7599101382433644
AUPRC: 0.5393335478813274
Sensitivity: 0.7055837563451777
Specificity: 0.6835443037974683
Threshold: 0.09
Accuracy:  0.6900149031296572

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.49it/s]
Loss: 0.616829365171412
AUROC: 0.7673352951967648
AUPRC: 0.5138256763504758
Sensitivity: 0.7017879948914432
Specificity: 0.7083714547118024
Threshold: 0.09
Accuracy:  0.7066352307174133

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0037.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.55it/s]
Loss: 0.6979496171697974
AUROC: 0.7485643775240897
AUPRC: 0.5235654634667055
Sensitivity: 0.6734348561759729
Specificity: 0.6926863572433193
Threshold: 0.09
Accuracy:  0.6870342771982116

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.55it/s]
Loss: 0.6404280018421912
AUROC: 0.7565936839448529
AUPRC: 0.495373962924768
Sensitivity: 0.7043422733077905
Specificity: 0.6935041171088746
Threshold: 0.08
Accuracy:  0.6963624115863927


Plot AUROC/AUPRC for Each Intermediate Model
  Epoch with best Validation Loss:      17, 0.5443
  Epoch with best model Test AUROC:      1, 0.8323
  Epoch with best model Test Accuracy:   1, 0.7664

AUROC/AUPRC Plots - Best Model Based on Validation Loss
  Epoch with best Validation Loss:   17, 0.5443
  Best Model Based on Validation Loss:
    ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0017.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.52it/s]
Loss: 0.5182698178355412
AUROC: 0.7767853074072907
AUPRC: 0.520568938411387
Sensitivity: 0.7037037037037037
Specificity: 0.716376944190302
Threshold: 0.18
Accuracy:  0.7130346918154261
<Figure size 640x480 with 0 Axes>
best_model_val_test_auroc: 0.7767853074072907
best_model_val_test_auprc: 0.520568938411387

AUROC/AUPRC Plots - Best Model Based on Model AUROC
  Epoch with best model Test AUROC:   1, 0.8323
  Best Model Based on Model AUROC:
    ./vitaldb_cache/models/ABP_EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9cbf0c79_0001.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.58it/s]
Loss: 0.6065289046495191
AUROC: 0.8322738219179524
AUPRC: 0.6797827493803628
Sensitivity: 0.7420178799489144
Specificity: 0.77516010978957
Threshold: 0.09
Accuracy:  0.7664196699225329
best_model_auroc_test_auroc: 0.8322738219179524
best_model_auroc_test_auprc: 0.6797827493803628

Total Processing Time: 3718.4740 sec
In [101]:
RUN_ME = True

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=True, 
        useEeg=True, 
        useEcg=False,
        nResiduals=12, 
        skip_connection=False,
        batch_size=64,
        learning_rate=1e-4,
        weight_decay=0.0,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
Experiment Setup
  name:              ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816
  prediction_window: 003
  max_cases:         _ALL
  use_abp:           True
  use_eeg:           True
  use_ecg:           False
  n_residuals:       12
  skip_connection:   False
  batch_size:        64
  learning_rate:     0.0001
  weight_decay:      0.0
  balance_labels:    False
  max_epochs:        200
  patience:          20
  device:            mps

Model Architecture
HypotensionCNN(
  (abpResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
  )
  (abpFc): Linear(in_features=2814, out_features=32, bias=True)
  (eegResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
    )
  )
  (eegFc): Linear(in_features=720, out_features=32, bias=True)
  (fullLinear1): Linear(in_features=64, out_features=16, bias=True)
  (fullLinear2): Linear(in_features=16, out_features=1, bias=True)
  (sigmoid): Sigmoid()
)

Training Loop
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.64it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.79it/s]
[2024-05-03 00:32:54.162114] Completed epoch 0 with training loss 0.47020438, validation loss 0.54999804
Validation loss improved to 0.54999804. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.65it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
[2024-05-03 00:33:51.314218] Completed epoch 1 with training loss 0.43712386, validation loss 0.60628301
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.65it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
[2024-05-03 00:34:48.399113] Completed epoch 2 with training loss 0.42941687, validation loss 0.66066962
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.66it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
[2024-05-03 00:35:45.432352] Completed epoch 3 with training loss 0.42533782, validation loss 0.64462519
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.65it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
[2024-05-03 00:36:42.525381] Completed epoch 4 with training loss 0.42379370, validation loss 0.58325392
No improvement in validation loss. 4 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.65it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
[2024-05-03 00:37:39.592969] Completed epoch 5 with training loss 0.41884148, validation loss 0.60267001
No improvement in validation loss. 5 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.65it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.80it/s]
[2024-05-03 00:38:36.718385] Completed epoch 6 with training loss 0.41611904, validation loss 0.67070758
No improvement in validation loss. 6 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.66it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.80it/s]
[2024-05-03 00:39:33.786657] Completed epoch 7 with training loss 0.41153434, validation loss 0.56031227
No improvement in validation loss. 7 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.66it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.81it/s]
[2024-05-03 00:40:30.820573] Completed epoch 8 with training loss 0.40964592, validation loss 0.56225991
No improvement in validation loss. 8 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.66it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
[2024-05-03 00:41:27.754826] Completed epoch 9 with training loss 0.41012910, validation loss 0.54919124
Validation loss improved to 0.54919124. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.66it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
[2024-05-03 00:42:24.828269] Completed epoch 10 with training loss 0.40219495, validation loss 0.55577183
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.66it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
[2024-05-03 00:43:21.735663] Completed epoch 11 with training loss 0.40323967, validation loss 0.60562629
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.65it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
[2024-05-03 00:44:18.829018] Completed epoch 12 with training loss 0.39727038, validation loss 0.64120990
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.65it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 00:45:15.911485] Completed epoch 13 with training loss 0.39365798, validation loss 0.55296302
No improvement in validation loss. 4 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.64it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.81it/s]
[2024-05-03 00:46:13.153870] Completed epoch 14 with training loss 0.39638445, validation loss 0.57000667
No improvement in validation loss. 5 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.61it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 00:47:10.756188] Completed epoch 15 with training loss 0.38887811, validation loss 0.56282645
No improvement in validation loss. 6 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.68it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.78it/s]
[2024-05-03 00:48:07.538916] Completed epoch 16 with training loss 0.38959631, validation loss 0.56657457
No improvement in validation loss. 7 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.68it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.85it/s]
[2024-05-03 00:49:04.265450] Completed epoch 17 with training loss 0.38514733, validation loss 0.63391459
No improvement in validation loss. 8 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.69it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.85it/s]
[2024-05-03 00:50:00.832903] Completed epoch 18 with training loss 0.38378111, validation loss 0.58770001
No improvement in validation loss. 9 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.66it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 00:50:57.819368] Completed epoch 19 with training loss 0.38229850, validation loss 0.59456831
No improvement in validation loss. 10 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.65it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
[2024-05-03 00:51:54.919338] Completed epoch 20 with training loss 0.38115874, validation loss 0.56535226
No improvement in validation loss. 11 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.65it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 00:52:51.961021] Completed epoch 21 with training loss 0.38010034, validation loss 0.53584182
Validation loss improved to 0.53584182. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.65it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
[2024-05-03 00:53:49.094276] Completed epoch 22 with training loss 0.37872380, validation loss 0.63682342
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.65it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
[2024-05-03 00:54:46.244618] Completed epoch 23 with training loss 0.37095788, validation loss 0.67187583
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.67it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
[2024-05-03 00:55:43.054576] Completed epoch 24 with training loss 0.37584561, validation loss 0.59503961
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.65it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
[2024-05-03 00:56:40.104078] Completed epoch 25 with training loss 0.36797002, validation loss 0.60433024
No improvement in validation loss. 4 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.66it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
[2024-05-03 00:57:37.131120] Completed epoch 26 with training loss 0.37071908, validation loss 0.54587805
No improvement in validation loss. 5 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.66it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 00:58:34.123410] Completed epoch 27 with training loss 0.36874297, validation loss 0.54712957
No improvement in validation loss. 6 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.65it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.78it/s]
[2024-05-03 00:59:31.240923] Completed epoch 28 with training loss 0.36403486, validation loss 0.60589576
No improvement in validation loss. 7 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.65it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
[2024-05-03 01:00:28.366700] Completed epoch 29 with training loss 0.36310491, validation loss 0.65269792
No improvement in validation loss. 8 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.67it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
[2024-05-03 01:01:25.243034] Completed epoch 30 with training loss 0.36160418, validation loss 0.58326805
No improvement in validation loss. 9 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.65it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
[2024-05-03 01:02:22.360506] Completed epoch 31 with training loss 0.36171925, validation loss 0.59366566
No improvement in validation loss. 10 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.65it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
[2024-05-03 01:03:19.420413] Completed epoch 32 with training loss 0.35761294, validation loss 0.65544093
No improvement in validation loss. 11 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.65it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
[2024-05-03 01:04:16.462140] Completed epoch 33 with training loss 0.35982567, validation loss 0.59339762
No improvement in validation loss. 12 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.65it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 01:05:13.505308] Completed epoch 34 with training loss 0.35481498, validation loss 0.64098084
No improvement in validation loss. 13 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.66it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.78it/s]
[2024-05-03 01:06:10.586799] Completed epoch 35 with training loss 0.35309121, validation loss 0.63621688
No improvement in validation loss. 14 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.66it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
[2024-05-03 01:07:07.562077] Completed epoch 36 with training loss 0.34912416, validation loss 0.64272761
No improvement in validation loss. 15 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.65it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.77it/s]
[2024-05-03 01:08:04.688416] Completed epoch 37 with training loss 0.35112199, validation loss 0.61487412
No improvement in validation loss. 16 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.65it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.81it/s]
[2024-05-03 01:09:01.776796] Completed epoch 38 with training loss 0.34746799, validation loss 0.62324965
No improvement in validation loss. 17 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.65it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
[2024-05-03 01:09:58.894101] Completed epoch 39 with training loss 0.34693724, validation loss 0.62724155
No improvement in validation loss. 18 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.64it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
[2024-05-03 01:10:56.094995] Completed epoch 40 with training loss 0.34468153, validation loss 0.68568176
No improvement in validation loss. 19 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.65it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
[2024-05-03 01:11:53.200752] Completed epoch 41 with training loss 0.34501952, validation loss 0.58844852
No improvement in validation loss. 20 epochs without improvement.
Early stopping due to no improvement in validation loss.

Plot Validation and Loss Values from Training
  Epoch with best Validation Loss:   21, 0.5358
Generate AUROC/AUPRC for Each Intermediate Model

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0000.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:05<00:00,  5.41it/s]
Loss: 0.5486195469275117
AUROC: 0.8418209380748736
AUPRC: 0.6889269281521345
Sensitivity: 0.7495769881556683
Specificity: 0.779887482419128
Threshold: 0.18
Accuracy:  0.7709885742672627

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.68it/s]
Loss: 0.5197224884584386
AUROC: 0.8279632580019842
AUPRC: 0.6664400958101776
Sensitivity: 0.7579821200510856
Specificity: 0.7518298261665142
Threshold: 0.17
Accuracy:  0.7534523408555069

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0001.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.74it/s]
Loss: 0.5952630462124944
AUROC: 0.8431869510067802
AUPRC: 0.6875955469720164
Sensitivity: 0.754653130287648
Specificity: 0.7763713080168776
Threshold: 0.12
Accuracy:  0.7699950322901142

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.76it/s]
Loss: 0.5651719872989962
AUROC: 0.8315842047208581
AUPRC: 0.6721744549058146
Sensitivity: 0.7656449553001277
Specificity: 0.7479414455626715
Threshold: 0.11
Accuracy:  0.7526103065005052

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0002.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.76it/s]
Loss: 0.6632387125864625
AUROC: 0.8440746214311722
AUPRC: 0.6869023940339647
Sensitivity: 0.766497461928934
Specificity: 0.7686357243319268
Threshold: 0.08
Accuracy:  0.7680079483358172

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.74it/s]
Loss: 0.6203103023831562
AUROC: 0.8330642928002299
AUPRC: 0.6720017775889765
Sensitivity: 0.7401021711366539
Specificity: 0.77516010978957
Threshold: 0.08
Accuracy:  0.7659144493095318

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0003.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.78it/s]
Loss: 0.6478738337755203
AUROC: 0.8447778563116222
AUPRC: 0.6863065990546291
Sensitivity: 0.7783417935702199
Specificity: 0.7475386779184248
Threshold: 0.08
Accuracy:  0.756582215598609

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.78it/s]
Loss: 0.6045632931173489
AUROC: 0.8336910316316885
AUPRC: 0.6701353017685947
Sensitivity: 0.7598978288633461
Specificity: 0.7543458371454712
Threshold: 0.08
Accuracy:  0.7558100370495117

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0004.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.75it/s]
Loss: 0.5882917996495962
AUROC: 0.8427502552349947
AUPRC: 0.6812668507998161
Sensitivity: 0.7648054145516074
Specificity: 0.7616033755274262
Threshold: 0.12
Accuracy:  0.7625434674615003

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.73it/s]
Loss: 0.5527827230192
AUROC: 0.8321327289999404
AUPRC: 0.6616407497887098
Sensitivity: 0.7726692209450831
Specificity: 0.7451967063129002
Threshold: 0.11
Accuracy:  0.7524418996295049

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0005.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.73it/s]
Loss: 0.5940149147063494
AUROC: 0.839911137765022
AUPRC: 0.6747202276126228
Sensitivity: 0.7614213197969543
Specificity: 0.7679324894514767
Threshold: 0.11
Accuracy:  0.7660208643815202

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.77it/s]
Loss: 0.5645517673223249
AUROC: 0.8298814498159074
AUPRC: 0.6525172656574751
Sensitivity: 0.7656449553001277
Specificity: 0.7529734675205856
Threshold: 0.1
Accuracy:  0.7563152576625126

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0006.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.71it/s]
Loss: 0.6809933753684163
AUROC: 0.8389377940557019
AUPRC: 0.6720505285825391
Sensitivity: 0.7597292724196277
Specificity: 0.759493670886076
Threshold: 0.07
Accuracy:  0.7595628415300546

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.73it/s]
Loss: 0.6380660481029942
AUROC: 0.8300180149073579
AUPRC: 0.6518178725656913
Sensitivity: 0.7388250319284803
Specificity: 0.7753888380603843
Threshold: 0.07
Accuracy:  0.7657460424385315

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0007.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.72it/s]
Loss: 0.5595764061436057
AUROC: 0.8304739874488637
AUPRC: 0.6451168614330822
Sensitivity: 0.7597292724196277
Specificity: 0.750351617440225
Threshold: 0.14
Accuracy:  0.7531048186785891

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.76it/s]
Loss: 0.5321611449603112
AUROC: 0.8208895514121561
AUPRC: 0.6154838877848086
Sensitivity: 0.743933588761175
Specificity: 0.7639524245196706
Threshold: 0.14
Accuracy:  0.7586729538565173

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0008.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.76it/s]
Loss: 0.5689485827460885
AUROC: 0.8304371003400755
AUPRC: 0.6455579494707913
Sensitivity: 0.7597292724196277
Specificity: 0.749648382559775
Threshold: 0.13
Accuracy:  0.7526080476900149

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.76it/s]
Loss: 0.5396794832201415
AUROC: 0.8213391938014929
AUPRC: 0.6144463514123435
Sensitivity: 0.7484035759897829
Specificity: 0.7637236962488564
Threshold: 0.13
Accuracy:  0.7596833950825194

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0009.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.75it/s]
Loss: 0.5477786939591169
AUROC: 0.8220577771114299
AUPRC: 0.6258295431057748
Sensitivity: 0.7411167512690355
Specificity: 0.7566807313642757
Threshold: 0.16
Accuracy:  0.7521112767014406

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.78it/s]
Loss: 0.5235582138261488
AUROC: 0.8146002542593703
AUPRC: 0.5891999508299838
Sensitivity: 0.7458492975734355
Specificity: 0.7564043915827996
Threshold: 0.15
Accuracy:  0.7536207477265072

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0010.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.70it/s]
Loss: 0.5496657816693187
AUROC: 0.8185713503775573
AUPRC: 0.619325141192938
Sensitivity: 0.7529610829103215
Specificity: 0.7383966244725738
Threshold: 0.15
Accuracy:  0.7426726279185295

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.74it/s]
Loss: 0.5266095164322084
AUROC: 0.8112371015366567
AUPRC: 0.5828810734086528
Sensitivity: 0.7369093231162197
Specificity: 0.757548032936871
Threshold: 0.15
Accuracy:  0.7521050858875042

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0011.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.74it/s]
Loss: 0.6008176309987903
AUROC: 0.8247255480115468
AUPRC: 0.6349366099104443
Sensitivity: 0.7478849407783418
Specificity: 0.7616033755274262
Threshold: 0.11
Accuracy:  0.7575757575757576

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.78it/s]
Loss: 0.5725035644987578
AUROC: 0.8166729764120685
AUPRC: 0.6030238079425077
Sensitivity: 0.7586206896551724
Specificity: 0.7479414455626715
Threshold: 0.1
Accuracy:  0.7507578309195015

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0012.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.76it/s]
Loss: 0.643924348987639
AUROC: 0.8256072689022635
AUPRC: 0.6366126870579968
Sensitivity: 0.7614213197969543
Specificity: 0.739803094233474
Threshold: 0.08
Accuracy:  0.7461500248385494

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.74it/s]
Loss: 0.6118701481690971
AUROC: 0.8176492342422872
AUPRC: 0.6105723039791379
Sensitivity: 0.7496807151979565
Specificity: 0.7554894784995425
Threshold: 0.08
Accuracy:  0.7539575614685079

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0013.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.74it/s]
Loss: 0.5527572566643357
AUROC: 0.8148267138821659
AUPRC: 0.6135452285862908
Sensitivity: 0.7461928934010152
Specificity: 0.7376933895921237
Threshold: 0.15
Accuracy:  0.7401887729756582

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.73it/s]
Loss: 0.5277765040756554
AUROC: 0.8061919342758224
AUPRC: 0.5700542424169791
Sensitivity: 0.7547892720306514
Specificity: 0.7367337602927722
Threshold: 0.14
Accuracy:  0.7414954530144829

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0014.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.77it/s]
Loss: 0.5647049946710467
AUROC: 0.8149576036230279
AUPRC: 0.6138063649302654
Sensitivity: 0.7428087986463621
Specificity: 0.7482419127988749
Threshold: 0.14
Accuracy:  0.7466467958271237

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.75it/s]
Loss: 0.5401381071536772
AUROC: 0.8053027275627207
AUPRC: 0.5705208153150877
Sensitivity: 0.7471264367816092
Specificity: 0.7403934126258005
Threshold: 0.13
Accuracy:  0.7421690804984843

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0015.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.75it/s]
Loss: 0.5571925044059753
AUROC: 0.8101039740505139
AUPRC: 0.6060830132027828
Sensitivity: 0.7428087986463621
Specificity: 0.739803094233474
Threshold: 0.15
Accuracy:  0.7406855439642325

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.76it/s]
Loss: 0.5326796166038
AUROC: 0.7999038055944072
AUPRC: 0.5614313028063881
Sensitivity: 0.7477650063856961
Specificity: 0.7344464775846294
Threshold: 0.14
Accuracy:  0.7379589087234759

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0016.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.75it/s]
Loss: 0.5633329544216394
AUROC: 0.8044888041675293
AUPRC: 0.5930270835718798
Sensitivity: 0.7529610829103215
Specificity: 0.7264416315049227
Threshold: 0.15
Accuracy:  0.734227521112767

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.75it/s]
Loss: 0.5352775624362371
AUROC: 0.7949823502399456
AUPRC: 0.5520662753151448
Sensitivity: 0.7484035759897829
Specificity: 0.7284995425434584
Threshold: 0.14
Accuracy:  0.7337487369484675

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0017.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.74it/s]
Loss: 0.6315201530233026
AUROC: 0.8132358085773237
AUPRC: 0.6118482412386107
Sensitivity: 0.7445008460236887
Specificity: 0.7524613220815752
Threshold: 0.1
Accuracy:  0.7501241927471436

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.75it/s]
Loss: 0.5971244185842494
AUROC: 0.8044263010052359
AUPRC: 0.5754814114001142
Sensitivity: 0.7458492975734355
Specificity: 0.7426806953339433
Threshold: 0.09
Accuracy:  0.743516335466487

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0018.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.73it/s]
Loss: 0.5843854444101453
AUROC: 0.8041330220537315
AUPRC: 0.5939391895551149
Sensitivity: 0.7445008460236887
Specificity: 0.729957805907173
Threshold: 0.13
Accuracy:  0.734227521112767

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.75it/s]
Loss: 0.5533458824439715
AUROC: 0.7945389883842261
AUPRC: 0.5465125427927822
Sensitivity: 0.7388250319284803
Specificity: 0.727355901189387
Threshold: 0.12
Accuracy:  0.7303805995284608

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0019.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.74it/s]
Loss: 0.5964811500161886
AUROC: 0.7998743458487723
AUPRC: 0.5854124019497887
Sensitivity: 0.727580372250423
Specificity: 0.7433192686357243
Threshold: 0.13
Accuracy:  0.7386984600099354

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.77it/s]
Loss: 0.5638781252407259
AUROC: 0.7891532847482936
AUPRC: 0.537388323475127
Sensitivity: 0.7215836526181354
Specificity: 0.7401646843549863
Threshold: 0.12
Accuracy:  0.7352643987874705

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0020.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.74it/s]
Loss: 0.5683677503839135
AUROC: 0.8043424456391108
AUPRC: 0.5968459769541674
Sensitivity: 0.7360406091370558
Specificity: 0.7440225035161744
Threshold: 0.15
Accuracy:  0.741679085941381

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.75it/s]
Loss: 0.5357343596155926
AUROC: 0.7941447023260759
AUPRC: 0.5610176750661408
Sensitivity: 0.7471264367816092
Specificity: 0.7214089661482159
Threshold: 0.13
Accuracy:  0.7281913102054564

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0021.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.74it/s]
Loss: 0.5357734495773911
AUROC: 0.7991984788232298
AUPRC: 0.5887941466944014
Sensitivity: 0.7292724196277496
Specificity: 0.720112517580872
Threshold: 0.19
Accuracy:  0.7228017883755589

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.78it/s]
Loss: 0.5073576382090969
AUROC: 0.7895841585662389
AUPRC: 0.5420361844875623
Sensitivity: 0.7343550446998723
Specificity: 0.7264409881061299
Threshold: 0.18
Accuracy:  0.728528123947457

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0022.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.77it/s]
Loss: 0.6426741806790233
AUROC: 0.8062724743634595
AUPRC: 0.6004285026326414
Sensitivity: 0.7343485617597293
Specificity: 0.7552742616033755
Threshold: 0.1
Accuracy:  0.7491306507699951

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.72it/s]
Loss: 0.6000214776685161
AUROC: 0.797400647800528
AUPRC: 0.565300467937039
Sensitivity: 0.722860791826309
Specificity: 0.7486276303751144
Threshold: 0.09
Accuracy:  0.7418322667564836

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0023.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.75it/s]
Loss: 0.6756585063412786
AUROC: 0.7996125663670481
AUPRC: 0.587626637712481
Sensitivity: 0.7428087986463621
Specificity: 0.7229254571026723
Threshold: 0.08
Accuracy:  0.7287630402384501

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.77it/s]
Loss: 0.6341681876169738
AUROC: 0.7894326954648121
AUPRC: 0.5503507781492668
Sensitivity: 0.7362707535121328
Specificity: 0.7136322049405307
Threshold: 0.07
Accuracy:  0.7196025597844392

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0024.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.75it/s]
Loss: 0.5933990385383368
AUROC: 0.7920911658944172
AUPRC: 0.5729421549914661
Sensitivity: 0.7258883248730964
Specificity: 0.7222222222222222
Threshold: 0.13
Accuracy:  0.7232985593641331

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.74it/s]
Loss: 0.5644856540746587
AUROC: 0.7795019303147044
AUPRC: 0.5322994622555131
Sensitivity: 0.7145593869731801
Specificity: 0.722323879231473
Threshold: 0.12
Accuracy:  0.7202761872684406

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0025.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.76it/s]
Loss: 0.606576981022954
AUROC: 0.7929562280908423
AUPRC: 0.5743455986387778
Sensitivity: 0.739424703891709
Specificity: 0.7137834036568214
Threshold: 0.12
Accuracy:  0.7213114754098361

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.78it/s]
Loss: 0.5685278319863862
AUROC: 0.7808035343922021
AUPRC: 0.5322291265333321
Sensitivity: 0.7298850574712644
Specificity: 0.7108874656907593
Threshold: 0.11
Accuracy:  0.7158976086224318

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0026.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.75it/s]
Loss: 0.5423164963722229
AUROC: 0.781239216470213
AUPRC: 0.5550360625817092
Sensitivity: 0.7225042301184433
Specificity: 0.7172995780590717
Threshold: 0.21
Accuracy:  0.7188276204669647

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.72it/s]
Loss: 0.518586165161543
AUROC: 0.7671181055807361
AUPRC: 0.5049567826330789
Sensitivity: 0.7068965517241379
Specificity: 0.7015096065873742
Threshold: 0.19
Accuracy:  0.7029302795554059

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0027.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.75it/s]
Loss: 0.5467080483213067
AUROC: 0.7805300320560874
AUPRC: 0.5530582109986856
Sensitivity: 0.7140439932318104
Specificity: 0.7271448663853727
Threshold: 0.21
Accuracy:  0.7232985593641331

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.76it/s]
Loss: 0.5222478093959952
AUROC: 0.7669272796000091
AUPRC: 0.5012219005201602
Sensitivity: 0.6992337164750958
Specificity: 0.7099725526075022
Threshold: 0.19
Accuracy:  0.7071404513304143

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0028.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.76it/s]
Loss: 0.6143820229917765
AUROC: 0.7878729465184517
AUPRC: 0.5647943358283647
Sensitivity: 0.7360406091370558
Specificity: 0.7229254571026723
Threshold: 0.12
Accuracy:  0.726775956284153

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.75it/s]
Loss: 0.5754487578586865
AUROC: 0.7746490496238106
AUPRC: 0.5184685938416241
Sensitivity: 0.7132822477650064
Specificity: 0.7134034766697164
Threshold: 0.11
Accuracy:  0.7133715055574268

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0029.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.75it/s]
Loss: 0.6497956523671746
AUROC: 0.7921494713244375
AUPRC: 0.5734184026011698
Sensitivity: 0.7411167512690355
Specificity: 0.7208157524613221
Threshold: 0.09
Accuracy:  0.726775956284153

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.75it/s]
Loss: 0.6107012145621802
AUROC: 0.7805834966272074
AUPRC: 0.5353322242317149
Sensitivity: 0.7318007662835249
Specificity: 0.7099725526075022
Threshold: 0.08
Accuracy:  0.7157292017514315

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0030.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.77it/s]
Loss: 0.5820736410096288
AUROC: 0.7889272038857593
AUPRC: 0.5689940053319165
Sensitivity: 0.7258883248730964
Specificity: 0.7264416315049227
Threshold: 0.21
Accuracy:  0.7262791852955788

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.75it/s]
Loss: 0.5150349608031652
AUROC: 0.7743737285570899
AUPRC: 0.5198893950850579
Sensitivity: 0.7068965517241379
Specificity: 0.7175205855443733
Threshold: 0.19
Accuracy:  0.7147187605254295

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0031.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.69it/s]
Loss: 0.5951428124681115
AUROC: 0.7878039319278155
AUPRC: 0.5704537364450928
Sensitivity: 0.7258883248730964
Specificity: 0.7243319268635724
Threshold: 0.14
Accuracy:  0.7247888723298559

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.76it/s]
Loss: 0.5573445177206429
AUROC: 0.7741121370289745
AUPRC: 0.5255838159478632
Sensitivity: 0.6998722860791826
Specificity: 0.7202653247941445
Threshold: 0.13
Accuracy:  0.7148871673964298

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0032.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.74it/s]
Loss: 0.6566948657855392
AUROC: 0.7797768210927626
AUPRC: 0.5566818902876279
Sensitivity: 0.7208121827411168
Specificity: 0.7172995780590717
Threshold: 0.13
Accuracy:  0.7183308494783904

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.76it/s]
Loss: 0.5748675654652298
AUROC: 0.7670950282711648
AUPRC: 0.5089146045351641
Sensitivity: 0.6928480204342273
Specificity: 0.7152333028362305
Threshold: 0.12
Accuracy:  0.7093297406534187

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0033.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.75it/s]
Loss: 0.5914493221789598
AUROC: 0.7963379430320252
AUPRC: 0.5856245363313889
Sensitivity: 0.727580372250423
Specificity: 0.7355836849507735
Threshold: 0.13
Accuracy:  0.7332339791356185

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.77it/s]
Loss: 0.5619011889862758
AUROC: 0.785832489112768
AUPRC: 0.5452439321424984
Sensitivity: 0.7209450830140486
Specificity: 0.7191216834400732
Threshold: 0.11
Accuracy:  0.7196025597844392

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0034.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.75it/s]
Loss: 0.6393388509750366
AUROC: 0.7941092477171638
AUPRC: 0.5803351833991447
Sensitivity: 0.7208121827411168
Specificity: 0.7433192686357243
Threshold: 0.1
Accuracy:  0.7367113760556383

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.73it/s]
Loss: 0.6044103383056579
AUROC: 0.7823796562123533
AUPRC: 0.5452801073326505
Sensitivity: 0.722860791826309
Specificity: 0.7179780420860018
Threshold: 0.08
Accuracy:  0.7192657460424385

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0035.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.76it/s]
Loss: 0.6386853512376547
AUROC: 0.782924124407129
AUPRC: 0.5633994590943031
Sensitivity: 0.7140439932318104
Specificity: 0.7264416315049227
Threshold: 0.14
Accuracy:  0.7228017883755589

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.74it/s]
Loss: 0.5643787220601113
AUROC: 0.7723330663376251
AUPRC: 0.5148063639264392
Sensitivity: 0.7075351213282248
Specificity: 0.7051692589204026
Threshold: 0.12
Accuracy:  0.7057931963624116

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0036.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.75it/s]
Loss: 0.6466555399820209
AUROC: 0.7872339666016978
AUPRC: 0.5708146201906307
Sensitivity: 0.7225042301184433
Specificity: 0.7313642756680732
Threshold: 0.1
Accuracy:  0.7287630402384501

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.75it/s]
Loss: 0.6091072794891172
AUROC: 0.7770394499304175
AUPRC: 0.5288054057942833
Sensitivity: 0.6979565772669221
Specificity: 0.729871912168344
Threshold: 0.09
Accuracy:  0.7214550353654429

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0037.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.75it/s]
Loss: 0.6205060547217727
AUROC: 0.776797294628047
AUPRC: 0.5560269703598442
Sensitivity: 0.7258883248730964
Specificity: 0.7165963431786216
Threshold: 0.13
Accuracy:  0.719324391455539

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.77it/s]
Loss: 0.5769112138978897
AUROC: 0.7659050862390295
AUPRC: 0.5120941515861803
Sensitivity: 0.7094508301404853
Specificity: 0.6964775846294602
Threshold: 0.11
Accuracy:  0.6998989558773998

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0038.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.75it/s]
Loss: 0.6288812607526779
AUROC: 0.7697125899272015
AUPRC: 0.5466171656658463
Sensitivity: 0.727580372250423
Specificity: 0.7060478199718706
Threshold: 0.12
Accuracy:  0.7123695976154992

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.75it/s]
Loss: 0.5843825181645732
AUROC: 0.7606697502626139
AUPRC: 0.5063713539135088
Sensitivity: 0.7068965517241379
Specificity: 0.7005946935041171
Threshold: 0.11
Accuracy:  0.7022566520714045

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0039.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.75it/s]
Loss: 0.6263504754751921
AUROC: 0.7835809529249097
AUPRC: 0.5670408137307961
Sensitivity: 0.7309644670050761
Specificity: 0.7194092827004219
Threshold: 0.11
Accuracy:  0.7228017883755589

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.76it/s]
Loss: 0.5907128712823314
AUROC: 0.7723118877940313
AUPRC: 0.5284022663804268
Sensitivity: 0.7043422733077905
Specificity: 0.7143183897529735
Threshold: 0.1
Accuracy:  0.7116874368474234

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0040.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.73it/s]
Loss: 0.6872758883982897
AUROC: 0.782254206915262
AUPRC: 0.5628607187197733
Sensitivity: 0.7174280879864636
Specificity: 0.7222222222222222
Threshold: 0.08
Accuracy:  0.7208147044212618

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.76it/s]
Loss: 0.6413549654265885
AUROC: 0.7742641843660868
AUPRC: 0.5316587795649955
Sensitivity: 0.7100893997445722
Specificity: 0.7134034766697164
Threshold: 0.07
Accuracy:  0.712529471202425

Intermediate Model:
  ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0041.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.74it/s]
Loss: 0.5932526383548975
AUROC: 0.7552397543080573
AUPRC: 0.5261103299621099
Sensitivity: 0.6988155668358714
Specificity: 0.6997187060478199
Threshold: 0.19
Accuracy:  0.6994535519125683

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.78it/s]
Loss: 0.5535720237480697
AUROC: 0.7469723446195983
AUPRC: 0.4862941803468687
Sensitivity: 0.6864623243933589
Specificity: 0.688700823421775
Threshold: 0.17
Accuracy:  0.6881104749073762


Plot AUROC/AUPRC for Each Intermediate Model
  Epoch with best Validation Loss:      21, 0.5358
  Epoch with best model Test AUROC:      3, 0.8337
  Epoch with best model Test Accuracy:   2, 0.7659

AUROC/AUPRC Plots - Best Model Based on Validation Loss
  Epoch with best Validation Loss:   21, 0.5358
  Best Model Based on Validation Loss:
    ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0021.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.76it/s]
Loss: 0.5073576382090969
AUROC: 0.7895841585662389
AUPRC: 0.5420361844875623
Sensitivity: 0.7343550446998723
Specificity: 0.7264409881061299
Threshold: 0.18
Accuracy:  0.728528123947457
<Figure size 640x480 with 0 Axes>
best_model_val_test_auroc: 0.7895841585662389
best_model_val_test_auprc: 0.5420361844875623

AUROC/AUPRC Plots - Best Model Based on Model AUROC
  Epoch with best model Test AUROC:   3, 0.8337
  Best Model Based on Model AUROC:
    ./vitaldb_cache/models/ABP_EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d4ab1816_0003.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.73it/s]
Loss: 0.6045632931173489
AUROC: 0.8336910316316885
AUPRC: 0.6701353017685947
Sensitivity: 0.7598978288633461
Specificity: 0.7543458371454712
Threshold: 0.08
Accuracy:  0.7558100370495117
best_model_auroc_test_auroc: 0.8336910316316885
best_model_auroc_test_auprc: 0.6701353017685947

Total Processing Time: 3583.1070 sec
In [102]:
RUN_ME = True

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=True, 
        useEeg=False, 
        useEcg=True,
        nResiduals=12, 
        skip_connection=False,
        batch_size=64,
        learning_rate=1e-4,
        weight_decay=0.0,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
Experiment Setup
  name:              ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb
  prediction_window: 003
  max_cases:         _ALL
  use_abp:           True
  use_eeg:           False
  use_ecg:           True
  n_residuals:       12
  skip_connection:   False
  batch_size:        64
  learning_rate:     0.0001
  weight_decay:      0.0
  balance_labels:    False
  max_epochs:        200
  patience:          20
  device:            mps

Model Architecture
HypotensionCNN(
  (abpResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
  )
  (abpFc): Linear(in_features=2814, out_features=32, bias=True)
  (ecgResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
  )
  (ecgFc): Linear(in_features=2814, out_features=32, bias=True)
  (fullLinear1): Linear(in_features=64, out_features=16, bias=True)
  (fullLinear2): Linear(in_features=16, out_features=1, bias=True)
  (sigmoid): Sigmoid()
)

Training Loop
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:58<00:00,  3.16it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.66it/s]
[2024-05-03 01:32:45.188876] Completed epoch 0 with training loss 0.47371641, validation loss 0.63347888
Validation loss improved to 0.63347888. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:58<00:00,  3.14it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.66it/s]
[2024-05-03 01:33:50.872295] Completed epoch 1 with training loss 0.43838322, validation loss 0.64608312
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:58<00:00,  3.16it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.66it/s]
[2024-05-03 01:34:56.014351] Completed epoch 2 with training loss 0.43159854, validation loss 0.60957444
Validation loss improved to 0.60957444. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:58<00:00,  3.16it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.63it/s]
[2024-05-03 01:36:01.222356] Completed epoch 3 with training loss 0.42497167, validation loss 0.68425071
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:58<00:00,  3.16it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.66it/s]
[2024-05-03 01:37:06.407991] Completed epoch 4 with training loss 0.42566216, validation loss 0.62465316
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:58<00:00,  3.16it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.64it/s]
[2024-05-03 01:38:11.590361] Completed epoch 5 with training loss 0.42078590, validation loss 0.62169468
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:58<00:00,  3.16it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.66it/s]
[2024-05-03 01:39:16.758015] Completed epoch 6 with training loss 0.42202735, validation loss 0.53636146
Validation loss improved to 0.53636146. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:58<00:00,  3.16it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.66it/s]
[2024-05-03 01:40:21.917884] Completed epoch 7 with training loss 0.41536924, validation loss 0.57658350
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:58<00:00,  3.17it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.66it/s]
[2024-05-03 01:41:26.934393] Completed epoch 8 with training loss 0.41462937, validation loss 0.67849898
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:58<00:00,  3.16it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.62it/s]
[2024-05-03 01:42:32.127737] Completed epoch 9 with training loss 0.41391215, validation loss 0.62817276
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [01:00<00:00,  3.04it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.62it/s]
[2024-05-03 01:43:39.693448] Completed epoch 10 with training loss 0.41271001, validation loss 0.51008856
Validation loss improved to 0.51008856. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:58<00:00,  3.16it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.80it/s]
[2024-05-03 01:44:44.692393] Completed epoch 11 with training loss 0.41004160, validation loss 0.59490758
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:58<00:00,  3.17it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.68it/s]
[2024-05-03 01:45:49.676883] Completed epoch 12 with training loss 0.40992779, validation loss 0.52706796
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:58<00:00,  3.17it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.69it/s]
[2024-05-03 01:46:54.652115] Completed epoch 13 with training loss 0.40288106, validation loss 0.62297165
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:57<00:00,  3.18it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.70it/s]
[2024-05-03 01:47:59.376762] Completed epoch 14 with training loss 0.40202180, validation loss 0.54324782
No improvement in validation loss. 4 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:57<00:00,  3.18it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.72it/s]
[2024-05-03 01:49:04.070143] Completed epoch 15 with training loss 0.39964435, validation loss 0.52419299
No improvement in validation loss. 5 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:57<00:00,  3.19it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.58it/s]
[2024-05-03 01:50:08.905765] Completed epoch 16 with training loss 0.39681262, validation loss 0.54207617
No improvement in validation loss. 6 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:57<00:00,  3.18it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.68it/s]
[2024-05-03 01:51:13.696448] Completed epoch 17 with training loss 0.39472413, validation loss 0.52802342
No improvement in validation loss. 7 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:57<00:00,  3.19it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.69it/s]
[2024-05-03 01:52:18.188700] Completed epoch 18 with training loss 0.39142534, validation loss 0.51496023
No improvement in validation loss. 8 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:57<00:00,  3.18it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.72it/s]
[2024-05-03 01:53:22.988269] Completed epoch 19 with training loss 0.39195210, validation loss 0.49091655
Validation loss improved to 0.49091655. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:58<00:00,  3.17it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.69it/s]
[2024-05-03 01:54:27.991842] Completed epoch 20 with training loss 0.38888600, validation loss 0.57270551
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:58<00:00,  3.17it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.67it/s]
[2024-05-03 01:55:32.940150] Completed epoch 21 with training loss 0.38564724, validation loss 0.53975117
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:57<00:00,  3.21it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.85it/s]
[2024-05-03 01:56:36.925104] Completed epoch 22 with training loss 0.38376734, validation loss 0.56302929
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.24it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
[2024-05-03 01:57:40.391376] Completed epoch 23 with training loss 0.38048959, validation loss 0.53920293
No improvement in validation loss. 4 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.24it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 01:58:43.781576] Completed epoch 24 with training loss 0.37792414, validation loss 0.51214993
No improvement in validation loss. 5 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.24it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 01:59:47.235485] Completed epoch 25 with training loss 0.37724197, validation loss 0.51255798
No improvement in validation loss. 6 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.23it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 02:00:50.843064] Completed epoch 26 with training loss 0.37471166, validation loss 0.50438350
No improvement in validation loss. 7 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.25it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 02:01:54.152143] Completed epoch 27 with training loss 0.36807084, validation loss 0.54188699
No improvement in validation loss. 8 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.24it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 02:02:57.560677] Completed epoch 28 with training loss 0.36702412, validation loss 0.55799168
No improvement in validation loss. 9 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.25it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 02:04:00.888434] Completed epoch 29 with training loss 0.36587068, validation loss 0.50741541
No improvement in validation loss. 10 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.24it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 02:05:04.331703] Completed epoch 30 with training loss 0.36436334, validation loss 0.52382135
No improvement in validation loss. 11 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.25it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.78it/s]
[2024-05-03 02:06:07.790587] Completed epoch 31 with training loss 0.36006379, validation loss 0.48708424
Validation loss improved to 0.48708424. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.25it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
[2024-05-03 02:07:11.171943] Completed epoch 32 with training loss 0.35953662, validation loss 0.52090770
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.24it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 02:08:14.705326] Completed epoch 33 with training loss 0.35602587, validation loss 0.52015477
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.25it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.85it/s]
[2024-05-03 02:09:17.971981] Completed epoch 34 with training loss 0.35199642, validation loss 0.50768185
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.24it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.85it/s]
[2024-05-03 02:10:21.399970] Completed epoch 35 with training loss 0.35102814, validation loss 0.53175062
No improvement in validation loss. 4 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.24it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 02:11:24.826053] Completed epoch 36 with training loss 0.34579200, validation loss 0.54381728
No improvement in validation loss. 5 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.24it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.85it/s]
[2024-05-03 02:12:28.240423] Completed epoch 37 with training loss 0.34403476, validation loss 0.58857965
No improvement in validation loss. 6 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.24it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 02:13:31.632870] Completed epoch 38 with training loss 0.34552440, validation loss 0.53888273
No improvement in validation loss. 7 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.25it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
[2024-05-03 02:14:35.000276] Completed epoch 39 with training loss 0.33663863, validation loss 0.63235247
No improvement in validation loss. 8 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.24it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 02:15:38.392060] Completed epoch 40 with training loss 0.33427292, validation loss 0.59831131
No improvement in validation loss. 9 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.24it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
[2024-05-03 02:16:41.909510] Completed epoch 41 with training loss 0.33481207, validation loss 0.54763192
No improvement in validation loss. 10 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.24it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
[2024-05-03 02:17:45.360055] Completed epoch 42 with training loss 0.33443567, validation loss 0.56313729
No improvement in validation loss. 11 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.23it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.85it/s]
[2024-05-03 02:18:48.993652] Completed epoch 43 with training loss 0.33188212, validation loss 0.59279001
No improvement in validation loss. 12 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.25it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 02:19:52.314134] Completed epoch 44 with training loss 0.32818052, validation loss 0.61082470
No improvement in validation loss. 13 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:57<00:00,  3.21it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.85it/s]
[2024-05-03 02:20:56.386927] Completed epoch 45 with training loss 0.32650658, validation loss 0.63695598
No improvement in validation loss. 14 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.24it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 02:21:59.773509] Completed epoch 46 with training loss 0.32458630, validation loss 0.58145404
No improvement in validation loss. 15 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.24it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
[2024-05-03 02:23:03.215762] Completed epoch 47 with training loss 0.32158500, validation loss 0.65691960
No improvement in validation loss. 16 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.24it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.77it/s]
[2024-05-03 02:24:06.727777] Completed epoch 48 with training loss 0.31862122, validation loss 0.62920690
No improvement in validation loss. 17 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:57<00:00,  3.21it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 02:25:10.644282] Completed epoch 49 with training loss 0.31350794, validation loss 0.62304872
No improvement in validation loss. 18 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.23it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.81it/s]
[2024-05-03 02:26:14.252023] Completed epoch 50 with training loss 0.31571355, validation loss 0.62988865
No improvement in validation loss. 19 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:56<00:00,  3.24it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
[2024-05-03 02:27:17.734075] Completed epoch 51 with training loss 0.31229007, validation loss 0.59737241
No improvement in validation loss. 20 epochs without improvement.
Early stopping due to no improvement in validation loss.

Plot Validation and Loss Values from Training
  Epoch with best Validation Loss:   31, 0.4871
Generate AUROC/AUPRC for Each Intermediate Model

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0000.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:05<00:00,  5.34it/s]
Loss: 0.6388839613646269
AUROC: 0.8426883800847689
AUPRC: 0.6999465615856963
Sensitivity: 0.7817258883248731
Specificity: 0.7538677918424754
Threshold: 0.1
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.73it/s]
Loss: 0.5939709758886726
AUROC: 0.8314236859663082
AUPRC: 0.6794819361939868
Sensitivity: 0.7496807151979565
Specificity: 0.7657822506861848
Threshold: 0.1
Accuracy:  0.761535870663523

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0001.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.78it/s]
Loss: 0.6468912465497851
AUROC: 0.8443233119388103
AUPRC: 0.7035308176685294
Sensitivity: 0.7935702199661591
Specificity: 0.7468354430379747
Threshold: 0.08
Accuracy:  0.7605563835072032

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.78it/s]
Loss: 0.6064491464245704
AUROC: 0.834730825092689
AUPRC: 0.684065241946066
Sensitivity: 0.7605363984674329
Specificity: 0.7543458371454712
Threshold: 0.08
Accuracy:  0.7559784439205119

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0002.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.77it/s]
Loss: 0.6065489426255226
AUROC: 0.8437961832551565
AUPRC: 0.7036787468418078
Sensitivity: 0.7715736040609137
Specificity: 0.760196905766526
Threshold: 0.1
Accuracy:  0.7635370094386488

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.78it/s]
Loss: 0.5721243716055348
AUROC: 0.8348687047144315
AUPRC: 0.6842828253936831
Sensitivity: 0.7477650063856961
Specificity: 0.7692131747483989
Threshold: 0.1
Accuracy:  0.7635567531155271

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0003.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.80it/s]
Loss: 0.6886052479967475
AUROC: 0.8444815695345799
AUPRC: 0.7038665432084806
Sensitivity: 0.7597292724196277
Specificity: 0.7616033755274262
Threshold: 0.06
Accuracy:  0.7610531544957775

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.80it/s]
Loss: 0.6518702441325752
AUROC: 0.8360547761851511
AUPRC: 0.6858495371349757
Sensitivity: 0.7464878671775224
Specificity: 0.7733302836230558
Threshold: 0.06
Accuracy:  0.7662512630515325

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0004.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.77it/s]
Loss: 0.6314616026356816
AUROC: 0.8445017979490768
AUPRC: 0.7035682677484619
Sensitivity: 0.751269035532995
Specificity: 0.770042194092827
Threshold: 0.09
Accuracy:  0.7645305514157973

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.77it/s]
Loss: 0.5891154126454425
AUROC: 0.8372792611521829
AUPRC: 0.6857379279683231
Sensitivity: 0.7739463601532567
Specificity: 0.7442817932296432
Threshold: 0.08
Accuracy:  0.7521050858875042

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0005.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.77it/s]
Loss: 0.6233027009293437
AUROC: 0.8437462071722819
AUPRC: 0.6999830972543284
Sensitivity: 0.7563451776649747
Specificity: 0.7637130801687764
Threshold: 0.09
Accuracy:  0.7615499254843517

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.81it/s]
Loss: 0.5843813129330194
AUROC: 0.8362252999758126
AUPRC: 0.6835740070210867
Sensitivity: 0.7477650063856961
Specificity: 0.7724153705397987
Threshold: 0.09
Accuracy:  0.7659144493095318

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0006.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.70it/s]
Loss: 0.5334361074492335
AUROC: 0.8424158914424287
AUPRC: 0.6959177563170952
Sensitivity: 0.7631133671742809
Specificity: 0.7573839662447257
Threshold: 0.16
Accuracy:  0.7590660705414803

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.77it/s]
Loss: 0.5059756735960642
AUROC: 0.8350319985884865
AUPRC: 0.6787459735246019
Sensitivity: 0.7464878671775224
Specificity: 0.7717291857273559
Threshold: 0.16
Accuracy:  0.7650724149545302

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0007.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.77it/s]
Loss: 0.5729758003726602
AUROC: 0.8427050387790604
AUPRC: 0.6978754642657032
Sensitivity: 0.7461928934010152
Specificity: 0.7693389592123769
Threshold: 0.12
Accuracy:  0.7625434674615003

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.81it/s]
Loss: 0.5460118316514517
AUROC: 0.8353321496718348
AUPRC: 0.6804336587528335
Sensitivity: 0.7637292464878672
Specificity: 0.7552607502287283
Threshold: 0.11
Accuracy:  0.757494105759515

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0008.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.78it/s]
Loss: 0.6720064217224717
AUROC: 0.8417126565619786
AUPRC: 0.7007872249913012
Sensitivity: 0.7529610829103215
Specificity: 0.7658227848101266
Threshold: 0.07
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.79it/s]
Loss: 0.636929646294604
AUROC: 0.8353514294494513
AUPRC: 0.6828020429991406
Sensitivity: 0.7777777777777778
Specificity: 0.7410795974382434
Threshold: 0.06
Accuracy:  0.7507578309195015

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0009.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.80it/s]
Loss: 0.6305156163871288
AUROC: 0.8427252671935573
AUPRC: 0.6974745933363287
Sensitivity: 0.754653130287648
Specificity: 0.7616033755274262
Threshold: 0.09
Accuracy:  0.7595628415300546

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.79it/s]
Loss: 0.5909546631318267
AUROC: 0.8358341541844712
AUPRC: 0.6781284691024282
Sensitivity: 0.7790549169859514
Specificity: 0.7438243366880146
Threshold: 0.08
Accuracy:  0.7531155271135063

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0010.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.78it/s]
Loss: 0.5093803284689784
AUROC: 0.840679817515903
AUPRC: 0.689719201231575
Sensitivity: 0.7631133671742809
Specificity: 0.7609001406469761
Threshold: 0.18
Accuracy:  0.7615499254843517

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.75it/s]
Loss: 0.48843696521174523
AUROC: 0.8330615176807246
AUPRC: 0.6703261576121907
Sensitivity: 0.7675606641123882
Specificity: 0.7532021957913998
Threshold: 0.17
Accuracy:  0.756988885146514

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0011.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.78it/s]
Loss: 0.5873925676569343
AUROC: 0.8414282688522874
AUPRC: 0.693064437656338
Sensitivity: 0.7445008460236887
Specificity: 0.7665260196905767
Threshold: 0.11
Accuracy:  0.7600596125186289

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.80it/s]
Loss: 0.5592664523470786
AUROC: 0.8345606664493309
AUPRC: 0.673737350601777
Sensitivity: 0.7662835249042146
Specificity: 0.755032021957914
Threshold: 0.1
Accuracy:  0.757999326372516

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0012.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.81it/s]
Loss: 0.5285725174471736
AUROC: 0.8387105218692958
AUPRC: 0.6846920592880926
Sensitivity: 0.7698815566835872
Specificity: 0.7475386779184248
Threshold: 0.16
Accuracy:  0.7540983606557377

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.79it/s]
Loss: 0.49990797908075396
AUROC: 0.8320628398060804
AUPRC: 0.6668460752952743
Sensitivity: 0.7567049808429118
Specificity: 0.7653247941445562
Threshold: 0.16
Accuracy:  0.7630515325025261

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0013.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.79it/s]
Loss: 0.6249671578407288
AUROC: 0.8409642052255946
AUPRC: 0.6912998736261086
Sensitivity: 0.766497461928934
Specificity: 0.750351617440225
Threshold: 0.08
Accuracy:  0.7550919026328863

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.81it/s]
Loss: 0.5915354639291763
AUROC: 0.8346686039921993
AUPRC: 0.6740689917714547
Sensitivity: 0.756066411238825
Specificity: 0.7673833485818847
Threshold: 0.08
Accuracy:  0.7643987874705288

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0014.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.79it/s]
Loss: 0.5435245167464018
AUROC: 0.8401955254747134
AUPRC: 0.6796355941357742
Sensitivity: 0.7648054145516074
Specificity: 0.7672292545710268
Threshold: 0.14
Accuracy:  0.7665176353700944

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.78it/s]
Loss: 0.516293141309933
AUROC: 0.8336966549001599
AUPRC: 0.663658709696495
Sensitivity: 0.7586206896551724
Specificity: 0.7580054894784996
Threshold: 0.13
Accuracy:  0.7581677332435164

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0015.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.75it/s]
Loss: 0.5277077183127403
AUROC: 0.8371803018079443
AUPRC: 0.6723851288720699
Sensitivity: 0.7597292724196277
Specificity: 0.7672292545710268
Threshold: 0.16
Accuracy:  0.7650273224043715

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.80it/s]
Loss: 0.5010684033234915
AUROC: 0.8300474457800071
AUPRC: 0.6567546734482654
Sensitivity: 0.7547892720306514
Specificity: 0.7593778591033852
Threshold: 0.15
Accuracy:  0.7581677332435164

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0016.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.79it/s]
Loss: 0.5455126296728849
AUROC: 0.8358916328138201
AUPRC: 0.6658666950368326
Sensitivity: 0.766497461928934
Specificity: 0.7573839662447257
Threshold: 0.14
Accuracy:  0.7600596125186289

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.78it/s]
Loss: 0.5197000580449258
AUROC: 0.8287668011577215
AUPRC: 0.6508985612711425
Sensitivity: 0.7611749680715197
Specificity: 0.7490850869167429
Threshold: 0.13
Accuracy:  0.7522734927585045

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0017.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.78it/s]
Loss: 0.5290799159556627
AUROC: 0.8344399465969856
AUPRC: 0.6603863630275478
Sensitivity: 0.7698815566835872
Specificity: 0.749648382559775
Threshold: 0.16
Accuracy:  0.7555886736214605

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.80it/s]
Loss: 0.5019684749585326
AUROC: 0.8267815682989043
AUPRC: 0.6440930494598716
Sensitivity: 0.7618135376756067
Specificity: 0.7486276303751144
Threshold: 0.15
Accuracy:  0.7521050858875042

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0018.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.77it/s]
Loss: 0.519587367773056
AUROC: 0.8324147253338284
AUPRC: 0.6510872242363756
Sensitivity: 0.7411167512690355
Specificity: 0.7658227848101266
Threshold: 0.18
Accuracy:  0.7585692995529061

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.77it/s]
Loss: 0.49438623138653337
AUROC: 0.8231778565327481
AUPRC: 0.6320721670062812
Sensitivity: 0.7611749680715197
Specificity: 0.7431381518755719
Threshold: 0.16
Accuracy:  0.7478949141124958

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0019.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.78it/s]
Loss: 0.4913540417328477
AUROC: 0.8308690364849203
AUPRC: 0.651717466845892
Sensitivity: 0.7461928934010152
Specificity: 0.7609001406469761
Threshold: 0.21
Accuracy:  0.756582215598609

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.72it/s]
Loss: 0.47429178110373915
AUROC: 0.8223964413035934
AUPRC: 0.6315868141767642
Sensitivity: 0.7509578544061303
Specificity: 0.7495425434583715
Threshold: 0.19
Accuracy:  0.7499157965644998

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0020.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.72it/s]
Loss: 0.5750471223145723
AUROC: 0.8329251953231905
AUPRC: 0.6563872010965479
Sensitivity: 0.7461928934010152
Specificity: 0.7609001406469761
Threshold: 0.12
Accuracy:  0.756582215598609

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.76it/s]
Loss: 0.546808908222824
AUROC: 0.823850603924428
AUPRC: 0.6343777747186722
Sensitivity: 0.7445721583652618
Specificity: 0.7621225983531564
Threshold: 0.11
Accuracy:  0.757494105759515

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0021.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.70it/s]
Loss: 0.5335348732769489
AUROC: 0.8251324961149546
AUPRC: 0.6388216633790865
Sensitivity: 0.7360406091370558
Specificity: 0.7616033755274262
Threshold: 0.16
Accuracy:  0.7540983606557377

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.77it/s]
Loss: 0.5112581249847207
AUROC: 0.8180069325406424
AUPRC: 0.6167724155997425
Sensitivity: 0.7554278416347382
Specificity: 0.742451967063129
Threshold: 0.14
Accuracy:  0.7458740316604917

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0022.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.79it/s]
Loss: 0.557078255340457
AUROC: 0.8252806395034756
AUPRC: 0.6377521355002664
Sensitivity: 0.766497461928934
Specificity: 0.7383966244725738
Threshold: 0.13
Accuracy:  0.7466467958271237

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.78it/s]
Loss: 0.5313608885131856
AUROC: 0.8175248650707685
AUPRC: 0.6154323147343044
Sensitivity: 0.7547892720306514
Specificity: 0.7419945105215004
Threshold: 0.12
Accuracy:  0.7453688110474908

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0023.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.79it/s]
Loss: 0.5406801169738173
AUROC: 0.8271255898962638
AUPRC: 0.6384345949921876
Sensitivity: 0.7529610829103215
Specificity: 0.7552742616033755
Threshold: 0.15
Accuracy:  0.754595131644312

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.77it/s]
Loss: 0.5113600479659214
AUROC: 0.8197825708473404
AUPRC: 0.6196616957942657
Sensitivity: 0.7579821200510856
Specificity: 0.7376486733760292
Threshold: 0.13
Accuracy:  0.743011114853486

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0024.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.75it/s]
Loss: 0.5121595915406942
AUROC: 0.8274540041551544
AUPRC: 0.6376174847977616
Sensitivity: 0.7563451776649747
Specificity: 0.7580872011251758
Threshold: 0.18
Accuracy:  0.7575757575757576

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.73it/s]
Loss: 0.4864742212718533
AUROC: 0.8196530165841142
AUPRC: 0.6202167874806159
Sensitivity: 0.7490421455938697
Specificity: 0.7520585544373285
Threshold: 0.16
Accuracy:  0.7512630515325025

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0025.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.79it/s]
Loss: 0.51381925214082
AUROC: 0.823139402333645
AUPRC: 0.6334850230036719
Sensitivity: 0.7563451776649747
Specificity: 0.7524613220815752
Threshold: 0.17
Accuracy:  0.7536015896671634

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.79it/s]
Loss: 0.4939687377022159
AUROC: 0.8160599671192157
AUPRC: 0.6149437839024318
Sensitivity: 0.7445721583652618
Specificity: 0.7415370539798719
Threshold: 0.15
Accuracy:  0.7423374873694847

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0026.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.76it/s]
Loss: 0.5015361960977316
AUROC: 0.8179716373830618
AUPRC: 0.6200770936609458
Sensitivity: 0.7461928934010152
Specificity: 0.7440225035161744
Threshold: 0.2
Accuracy:  0.7446597118728266

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.76it/s]
Loss: 0.4803028263712442
AUROC: 0.8110663586576135
AUPRC: 0.6008693897960992
Sensitivity: 0.7381864623243933
Specificity: 0.7415370539798719
Threshold: 0.18
Accuracy:  0.7406534186594813

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0027.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.79it/s]
Loss: 0.5442142868414521
AUROC: 0.8216175116194392
AUPRC: 0.627621253075508
Sensitivity: 0.751269035532995
Specificity: 0.7517580872011251
Threshold: 0.14
Accuracy:  0.7516145057128664

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.80it/s]
Loss: 0.5203530254863924
AUROC: 0.8139843237880908
AUPRC: 0.6078077811311918
Sensitivity: 0.7452107279693486
Specificity: 0.7410795974382434
Threshold: 0.12
Accuracy:  0.7421690804984843

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0028.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.74it/s]
Loss: 0.5549684911966324
AUROC: 0.807705122072532
AUPRC: 0.6037831376429488
Sensitivity: 0.7360406091370558
Specificity: 0.7376933895921237
Threshold: 0.14
Accuracy:  0.7372081470442127

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.76it/s]
Loss: 0.5292635821206595
AUROC: 0.8020044250010808
AUPRC: 0.5798216697894564
Sensitivity: 0.7381864623243933
Specificity: 0.7204940530649588
Threshold: 0.12
Accuracy:  0.7251599865274503

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0029.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.77it/s]
Loss: 0.5126138981431723
AUROC: 0.8064021741975864
AUPRC: 0.5975482253281386
Sensitivity: 0.7428087986463621
Specificity: 0.7334739803094233
Threshold: 0.2
Accuracy:  0.736214605067064

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.80it/s]
Loss: 0.48620362515731524
AUROC: 0.8016172228006156
AUPRC: 0.5799678656655446
Sensitivity: 0.731162196679438
Specificity: 0.7301006404391582
Threshold: 0.18
Accuracy:  0.7303805995284608

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0030.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.79it/s]
Loss: 0.5209147669374943
AUROC: 0.8115247226922355
AUPRC: 0.6075423870829191
Sensitivity: 0.7360406091370558
Specificity: 0.7461322081575246
Threshold: 0.18
Accuracy:  0.7431693989071039

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.80it/s]
Loss: 0.49481396489245916
AUROC: 0.8069042636351845
AUPRC: 0.5892823795227901
Sensitivity: 0.7305236270753512
Specificity: 0.7415370539798719
Threshold: 0.16
Accuracy:  0.7386325362074773

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0031.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.80it/s]
Loss: 0.4899921305477619
AUROC: 0.8005775807292225
AUPRC: 0.5878309200861125
Sensitivity: 0.7309644670050761
Specificity: 0.7313642756680732
Threshold: 0.29
Accuracy:  0.7312468951813215

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.77it/s]
Loss: 0.46556954262077166
AUROC: 0.798705684262677
AUPRC: 0.5714360235507607
Sensitivity: 0.7247765006385696
Specificity: 0.7355901189387009
Threshold: 0.27
Accuracy:  0.7327382957224655

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0032.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.77it/s]
Loss: 0.5240099672228098
AUROC: 0.7988272279218755
AUPRC: 0.5867516084212901
Sensitivity: 0.7258883248730964
Specificity: 0.7334739803094233
Threshold: 0.19
Accuracy:  0.7312468951813215

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.76it/s]
Loss: 0.4926510025416651
AUROC: 0.798347036581333
AUPRC: 0.5714562391345782
Sensitivity: 0.7318007662835249
Specificity: 0.7262122598353157
Threshold: 0.17
Accuracy:  0.7276860895924554

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0033.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.77it/s]
Loss: 0.5139437224715948
AUROC: 0.7873101206327447
AUPRC: 0.5697554731634392
Sensitivity: 0.7309644670050761
Specificity: 0.7194092827004219
Threshold: 0.22
Accuracy:  0.7228017883755589

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.81it/s]
Loss: 0.4861622867725229
AUROC: 0.7887083892739002
AUPRC: 0.5532743132333716
Sensitivity: 0.7183908045977011
Specificity: 0.7227813357731016
Threshold: 0.21
Accuracy:  0.7216234422364433

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0034.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.80it/s]
Loss: 0.5121630094945431
AUROC: 0.799642314035426
AUPRC: 0.5882505323907611
Sensitivity: 0.727580372250423
Specificity: 0.7341772151898734
Threshold: 0.22
Accuracy:  0.73224043715847

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.80it/s]
Loss: 0.4809680954423002
AUROC: 0.8006802548202365
AUPRC: 0.5777426301750687
Sensitivity: 0.7394636015325671
Specificity: 0.7271271729185728
Threshold: 0.19
Accuracy:  0.7303805995284608

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0035.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
Loss: 0.5323301404714584
AUROC: 0.7915676069309687
AUPRC: 0.5744611862006067
Sensitivity: 0.7258883248730964
Specificity: 0.7215189873417721
Threshold: 0.18
Accuracy:  0.7228017883755589

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.81it/s]
Loss: 0.49965372793777013
AUROC: 0.793624732566115
AUPRC: 0.5650697883829984
Sensitivity: 0.722860791826309
Specificity: 0.7289569990850869
Threshold: 0.17
Accuracy:  0.7273492758504547

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0036.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
Loss: 0.5421406384557486
AUROC: 0.7925361910133484
AUPRC: 0.576225826607041
Sensitivity: 0.7326565143824028
Specificity: 0.7180028129395218
Threshold: 0.16
Accuracy:  0.7223050173869846

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.80it/s]
Loss: 0.5112465794688912
AUROC: 0.7950267521520322
AUPRC: 0.564877684511954
Sensitivity: 0.7292464878671775
Specificity: 0.727355901189387
Threshold: 0.15
Accuracy:  0.7278544964634557

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0037.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.76it/s]
Loss: 0.5843841172754765
AUROC: 0.7935392823910463
AUPRC: 0.585236540776624
Sensitivity: 0.7309644670050761
Specificity: 0.7236286919831224
Threshold: 0.12
Accuracy:  0.7257824143070045

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.81it/s]
Loss: 0.5483820813317453
AUROC: 0.7949987088391354
AUPRC: 0.5701278959468546
Sensitivity: 0.7222222222222222
Specificity: 0.7294144556267155
Threshold: 0.11
Accuracy:  0.727517682721455

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0038.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.81it/s]
Loss: 0.5308247655630112
AUROC: 0.7875373928191507
AUPRC: 0.5710311172985825
Sensitivity: 0.7343485617597293
Specificity: 0.7215189873417721
Threshold: 0.19
Accuracy:  0.7252856433184302

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.81it/s]
Loss: 0.49840898186929766
AUROC: 0.7914342869228189
AUPRC: 0.5622593970161697
Sensitivity: 0.7177522349936143
Specificity: 0.7310155535224153
Threshold: 0.18
Accuracy:  0.727517682721455

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0039.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.81it/s]
Loss: 0.6272449670359492
AUROC: 0.7990985266574806
AUPRC: 0.5947030189521711
Sensitivity: 0.7225042301184433
Specificity: 0.7320675105485233
Threshold: 0.09
Accuracy:  0.7292598112270243

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.80it/s]
Loss: 0.5943436175584793
AUROC: 0.7997951377569322
AUPRC: 0.5799245215664144
Sensitivity: 0.7164750957854407
Specificity: 0.7390210430009149
Threshold: 0.08
Accuracy:  0.7330751094644662

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0040.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.76it/s]
Loss: 0.6025278372690082
AUROC: 0.7849850428723397
AUPRC: 0.5719170347031931
Sensitivity: 0.7038917089678511
Specificity: 0.7264416315049227
Threshold: 0.12
Accuracy:  0.7198211624441133

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.78it/s]
Loss: 0.5639680814678951
AUROC: 0.7884811215922992
AUPRC: 0.556686150977479
Sensitivity: 0.7279693486590039
Specificity: 0.7152333028362305
Threshold: 0.1
Accuracy:  0.7185921185584372

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0041.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.79it/s]
Loss: 0.5517349382862449
AUROC: 0.7716116810764373
AUPRC: 0.5440028837725343
Sensitivity: 0.7140439932318104
Specificity: 0.7011251758087201
Threshold: 0.19
Accuracy:  0.7049180327868853

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.77it/s]
Loss: 0.5101440542487687
AUROC: 0.7785403514060799
AUPRC: 0.5373807732876706
Sensitivity: 0.7183908045977011
Specificity: 0.7118023787740164
Threshold: 0.18
Accuracy:  0.7135399124284271

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0042.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.79it/s]
Loss: 0.5656858999282122
AUROC: 0.7767663570529342
AUPRC: 0.5560761316346396
Sensitivity: 0.7140439932318104
Specificity: 0.7130801687763713
Threshold: 0.16
Accuracy:  0.7133631395926477

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.79it/s]
Loss: 0.523279151288412
AUROC: 0.7849165536170616
AUPRC: 0.5498062352972382
Sensitivity: 0.7177522349936143
Specificity: 0.722323879231473
Threshold: 0.15
Accuracy:  0.7211182216234422

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0043.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.78it/s]
Loss: 0.5926492214202881
AUROC: 0.7802920507090654
AUPRC: 0.5602876512522996
Sensitivity: 0.7241962774957699
Specificity: 0.7081575246132208
Threshold: 0.12
Accuracy:  0.7128663686040735

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.80it/s]
Loss: 0.552250950887639
AUROC: 0.7867869841637075
AUPRC: 0.5566191877868146
Sensitivity: 0.722860791826309
Specificity: 0.7111161939615737
Threshold: 0.11
Accuracy:  0.7142135399124284

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0044.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.78it/s]
Loss: 0.6108083492144942
AUROC: 0.782496352935857
AUPRC: 0.5668504349585957
Sensitivity: 0.7055837563451777
Specificity: 0.7208157524613221
Threshold: 0.12
Accuracy:  0.7163437655240934

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.78it/s]
Loss: 0.562609393269785
AUROC: 0.789607527993653
AUPRC: 0.5615261031655878
Sensitivity: 0.7298850574712644
Specificity: 0.7134034766697164
Threshold: 0.1
Accuracy:  0.7177500842034354

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0045.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.80it/s]
Loss: 0.6430441159754992
AUROC: 0.7758899907425256
AUPRC: 0.5584158183934155
Sensitivity: 0.700507614213198
Specificity: 0.7180028129395218
Threshold: 0.1
Accuracy:  0.7128663686040735

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.78it/s]
Loss: 0.5917022255479648
AUROC: 0.784009235597714
AUPRC: 0.5522722464487527
Sensitivity: 0.7068965517241379
Specificity: 0.7271271729185728
Threshold: 0.09
Accuracy:  0.7217918491074435

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0046.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.75it/s]
Loss: 0.5811036620289087
AUROC: 0.7715022096568072
AUPRC: 0.5473066171405718
Sensitivity: 0.7157360406091371
Specificity: 0.7025316455696202
Threshold: 0.15
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.77it/s]
Loss: 0.5353839209964198
AUROC: 0.7817654784481297
AUPRC: 0.5473197480158449
Sensitivity: 0.719029374201788
Specificity: 0.7095150960658737
Threshold: 0.14
Accuracy:  0.7120242505894241

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0047.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.79it/s]
Loss: 0.6544046988710761
AUROC: 0.7724910221536836
AUPRC: 0.5554377939915419
Sensitivity: 0.700507614213198
Specificity: 0.7081575246132208
Threshold: 0.09
Accuracy:  0.7059115747640338

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.80it/s]
Loss: 0.6014090199624339
AUROC: 0.7826773242940388
AUPRC: 0.5497339207248355
Sensitivity: 0.7164750957854407
Specificity: 0.7138609332113449
Threshold: 0.08
Accuracy:  0.7145503536544291

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0048.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.79it/s]
Loss: 0.6247539445757866
AUROC: 0.7539784531688406
AUPRC: 0.5274559951846263
Sensitivity: 0.6818950930626058
Specificity: 0.6919831223628692
Threshold: 0.12
Accuracy:  0.6890213611525087

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.48it/s]
Loss: 0.5728384453442789
AUROC: 0.7696760354701169
AUPRC: 0.5272330650486485
Sensitivity: 0.7094508301404853
Specificity: 0.694647758462946
Threshold: 0.11
Accuracy:  0.6985517009093971

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0049.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.75it/s]
Loss: 0.6242374014109373
AUROC: 0.768139533223386
AUPRC: 0.5501587599863417
Sensitivity: 0.700507614213198
Specificity: 0.7109704641350211
Threshold: 0.12
Accuracy:  0.7078986587183308

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.81it/s]
Loss: 0.5725424015714277
AUROC: 0.779989109846825
AUPRC: 0.5461560278181715
Sensitivity: 0.7183908045977011
Specificity: 0.7035681610247027
Threshold: 0.1
Accuracy:  0.7074772650724149

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0050.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.77it/s]
Loss: 0.6334585659205914
AUROC: 0.7529789315113481
AUPRC: 0.5270283764472491
Sensitivity: 0.6988155668358714
Specificity: 0.6884669479606188
Threshold: 0.12
Accuracy:  0.6915052160953801

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.76it/s]
Loss: 0.5739968451120521
AUROC: 0.7687387753718953
AUPRC: 0.527102063321575
Sensitivity: 0.7100893997445722
Specificity: 0.7017383348581885
Threshold: 0.11
Accuracy:  0.7039407207814079

Intermediate Model:
  ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0051.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.78it/s]
Loss: 0.590881654061377
AUROC: 0.7575838705762242
AUPRC: 0.5303965743738919
Sensitivity: 0.6988155668358714
Specificity: 0.6954992967651196
Threshold: 0.18
Accuracy:  0.6964729259811226

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.80it/s]
Loss: 0.5407130710219824
AUROC: 0.7713088281517471
AUPRC: 0.529141321659217
Sensitivity: 0.7017879948914432
Specificity: 0.7053979871912168
Threshold: 0.17
Accuracy:  0.7044459413944089


Plot AUROC/AUPRC for Each Intermediate Model
  Epoch with best Validation Loss:      31, 0.4871
  Epoch with best model Test AUROC:      4, 0.8373
  Epoch with best model Test Accuracy:   3, 0.7663

AUROC/AUPRC Plots - Best Model Based on Validation Loss
  Epoch with best Validation Loss:   31, 0.4871
  Best Model Based on Validation Loss:
    ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0031.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.79it/s]
Loss: 0.46556954262077166
AUROC: 0.798705684262677
AUPRC: 0.5714360235507607
Sensitivity: 0.7247765006385696
Specificity: 0.7355901189387009
Threshold: 0.27
Accuracy:  0.7327382957224655
<Figure size 640x480 with 0 Axes>
best_model_val_test_auroc: 0.798705684262677
best_model_val_test_auprc: 0.5714360235507607

AUROC/AUPRC Plots - Best Model Based on Model AUROC
  Epoch with best model Test AUROC:   4, 0.8373
  Best Model Based on Model AUROC:
    ./vitaldb_cache/models/ABP_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_0fb62fdb_0004.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.78it/s]
Loss: 0.5891154126454425
AUROC: 0.8372792611521829
AUPRC: 0.6857379279683231
Sensitivity: 0.7739463601532567
Specificity: 0.7442817932296432
Threshold: 0.08
Accuracy:  0.7521050858875042
best_model_auroc_test_auroc: 0.8372792611521829
best_model_auroc_test_auprc: 0.6857379279683231

Total Processing Time: 4790.1680 sec
In [103]:
RUN_ME = True

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=True, 
        useEeg=False, 
        useEcg=False,
        nResiduals=12, 
        skip_connection=False,
        batch_size=64,
        learning_rate=1e-4,
        weight_decay=0.0,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
Experiment Setup
  name:              ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4
  prediction_window: 003
  max_cases:         _ALL
  use_abp:           True
  use_eeg:           False
  use_ecg:           False
  n_residuals:       12
  skip_connection:   False
  batch_size:        64
  learning_rate:     0.0001
  weight_decay:      0.0
  balance_labels:    False
  max_epochs:        200
  patience:          20
  device:            mps

Model Architecture
HypotensionCNN(
  (abpResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
  )
  (abpFc): Linear(in_features=2814, out_features=32, bias=True)
  (fullLinear1): Linear(in_features=32, out_features=16, bias=True)
  (fullLinear2): Linear(in_features=16, out_features=1, bias=True)
  (sigmoid): Sigmoid()
)

Training Loop
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.05it/s]
[2024-05-03 02:52:22.800590] Completed epoch 0 with training loss 0.47094715, validation loss 0.61228812
Validation loss improved to 0.61228812. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.06it/s]
[2024-05-03 02:53:15.172114] Completed epoch 1 with training loss 0.43698177, validation loss 0.58030427
Validation loss improved to 0.58030427. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.98it/s]
[2024-05-03 02:54:07.634469] Completed epoch 2 with training loss 0.43396798, validation loss 0.62187839
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.04it/s]
[2024-05-03 02:54:59.939370] Completed epoch 3 with training loss 0.43051592, validation loss 0.55480528
Validation loss improved to 0.55480528. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.04it/s]
[2024-05-03 02:55:52.466009] Completed epoch 4 with training loss 0.42716342, validation loss 0.68283755
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.86it/s]
[2024-05-03 02:56:45.177042] Completed epoch 5 with training loss 0.42502698, validation loss 0.62173164
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.05it/s]
[2024-05-03 02:57:37.901098] Completed epoch 6 with training loss 0.42439792, validation loss 0.48504674
Validation loss improved to 0.48504674. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.07it/s]
[2024-05-03 02:58:30.167006] Completed epoch 7 with training loss 0.42126188, validation loss 0.56092966
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.04it/s]
[2024-05-03 02:59:22.450912] Completed epoch 8 with training loss 0.42089719, validation loss 0.63100493
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  4.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.06it/s]
[2024-05-03 03:00:14.817962] Completed epoch 9 with training loss 0.41859645, validation loss 0.52102220
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.02it/s]
[2024-05-03 03:01:07.125576] Completed epoch 10 with training loss 0.41986299, validation loss 0.51443505
No improvement in validation loss. 4 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.06it/s]
[2024-05-03 03:01:59.388610] Completed epoch 11 with training loss 0.41404277, validation loss 0.51546949
No improvement in validation loss. 5 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.04it/s]
[2024-05-03 03:02:51.879999] Completed epoch 12 with training loss 0.41332850, validation loss 0.53834069
No improvement in validation loss. 6 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.05it/s]
[2024-05-03 03:03:44.130651] Completed epoch 13 with training loss 0.41375905, validation loss 0.50081015
No improvement in validation loss. 7 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  4.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.04it/s]
[2024-05-03 03:04:36.565421] Completed epoch 14 with training loss 0.40920693, validation loss 0.53587258
No improvement in validation loss. 8 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.04it/s]
[2024-05-03 03:05:28.881313] Completed epoch 15 with training loss 0.41131002, validation loss 0.50954366
No improvement in validation loss. 9 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.04it/s]
[2024-05-03 03:06:21.237376] Completed epoch 16 with training loss 0.41109231, validation loss 0.50710815
No improvement in validation loss. 10 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.05it/s]
[2024-05-03 03:07:13.581509] Completed epoch 17 with training loss 0.40680569, validation loss 0.55674303
No improvement in validation loss. 11 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.97it/s]
[2024-05-03 03:08:06.008008] Completed epoch 18 with training loss 0.40583810, validation loss 0.52272755
No improvement in validation loss. 12 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.05it/s]
[2024-05-03 03:08:58.346380] Completed epoch 19 with training loss 0.40434310, validation loss 0.51317143
No improvement in validation loss. 13 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.06it/s]
[2024-05-03 03:09:51.232348] Completed epoch 20 with training loss 0.40160140, validation loss 0.58531272
No improvement in validation loss. 14 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.07it/s]
[2024-05-03 03:10:43.662700] Completed epoch 21 with training loss 0.40186045, validation loss 0.52125788
No improvement in validation loss. 15 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.04it/s]
[2024-05-03 03:11:35.954002] Completed epoch 22 with training loss 0.40074033, validation loss 0.53144842
No improvement in validation loss. 16 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.03it/s]
[2024-05-03 03:12:28.823694] Completed epoch 23 with training loss 0.39959353, validation loss 0.52643806
No improvement in validation loss. 17 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.05it/s]
[2024-05-03 03:13:21.073484] Completed epoch 24 with training loss 0.39566097, validation loss 0.48247308
Validation loss improved to 0.48247308. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.04it/s]
[2024-05-03 03:14:13.407913] Completed epoch 25 with training loss 0.39813271, validation loss 0.52576733
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.06it/s]
[2024-05-03 03:15:05.739067] Completed epoch 26 with training loss 0.39708182, validation loss 0.54962599
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  4.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.04it/s]
[2024-05-03 03:15:58.138780] Completed epoch 27 with training loss 0.39321962, validation loss 0.59714377
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.88it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.06it/s]
[2024-05-03 03:16:51.904338] Completed epoch 28 with training loss 0.39376301, validation loss 0.55135620
No improvement in validation loss. 4 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.04it/s]
[2024-05-03 03:17:44.191487] Completed epoch 29 with training loss 0.39479926, validation loss 0.49717957
No improvement in validation loss. 5 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  4.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.06it/s]
[2024-05-03 03:18:36.555504] Completed epoch 30 with training loss 0.39165622, validation loss 0.51184034
No improvement in validation loss. 6 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  4.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.04it/s]
[2024-05-03 03:19:28.946801] Completed epoch 31 with training loss 0.38915032, validation loss 0.55825746
No improvement in validation loss. 7 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.58it/s]
[2024-05-03 03:20:21.880817] Completed epoch 32 with training loss 0.38998836, validation loss 0.57712489
No improvement in validation loss. 8 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.06it/s]
[2024-05-03 03:21:14.339279] Completed epoch 33 with training loss 0.38774937, validation loss 0.54212660
No improvement in validation loss. 9 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
[2024-05-03 03:22:06.762747] Completed epoch 34 with training loss 0.38767210, validation loss 0.53990579
No improvement in validation loss. 10 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.06it/s]
[2024-05-03 03:22:59.034545] Completed epoch 35 with training loss 0.38288391, validation loss 0.56974626
No improvement in validation loss. 11 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.05it/s]
[2024-05-03 03:23:51.331309] Completed epoch 36 with training loss 0.38343951, validation loss 0.53679043
No improvement in validation loss. 12 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.03it/s]
[2024-05-03 03:24:43.786797] Completed epoch 37 with training loss 0.38275918, validation loss 0.55572361
No improvement in validation loss. 13 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.05it/s]
[2024-05-03 03:25:36.059442] Completed epoch 38 with training loss 0.38067132, validation loss 0.54518485
No improvement in validation loss. 14 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.05it/s]
[2024-05-03 03:26:28.413245] Completed epoch 39 with training loss 0.37698165, validation loss 0.55819064
No improvement in validation loss. 15 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.05it/s]
[2024-05-03 03:27:20.734157] Completed epoch 40 with training loss 0.37850198, validation loss 0.52254260
No improvement in validation loss. 16 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.03it/s]
[2024-05-03 03:28:13.448135] Completed epoch 41 with training loss 0.37696680, validation loss 0.61698711
No improvement in validation loss. 17 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.06it/s]
[2024-05-03 03:29:05.900960] Completed epoch 42 with training loss 0.37701660, validation loss 0.54172587
No improvement in validation loss. 18 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.05it/s]
[2024-05-03 03:29:58.906131] Completed epoch 43 with training loss 0.37491700, validation loss 0.55953979
No improvement in validation loss. 19 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  4.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.05it/s]
[2024-05-03 03:30:51.298296] Completed epoch 44 with training loss 0.37407917, validation loss 0.52590048
No improvement in validation loss. 20 epochs without improvement.
Early stopping due to no improvement in validation loss.

Plot Validation and Loss Values from Training
  Epoch with best Validation Loss:   24, 0.4825
Generate AUROC/AUPRC for Each Intermediate Model

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0000.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:05<00:00,  5.65it/s]
Loss: 0.6101355627179146
AUROC: 0.8434975166646439
AUPRC: 0.695856896779709
Sensitivity: 0.7529610829103215
Specificity: 0.7728551336146273
Threshold: 0.12
Accuracy:  0.7670144063586687

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.97it/s]
Loss: 0.5698892704902156
AUROC: 0.8320540762708004
AUPRC: 0.6762684350854661
Sensitivity: 0.776500638569604
Specificity: 0.734903934126258
Threshold: 0.11
Accuracy:  0.7458740316604917

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0001.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.20it/s]
Loss: 0.5808036113157868
AUROC: 0.8443340210994262
AUPRC: 0.7017747397079107
Sensitivity: 0.7681895093062606
Specificity: 0.7658227848101266
Threshold: 0.12
Accuracy:  0.7665176353700944

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.00it/s]
Loss: 0.5463852781441904
AUROC: 0.8349504977103804
AUPRC: 0.6832693347463318
Sensitivity: 0.7426564495530013
Specificity: 0.7772186642268984
Threshold: 0.12
Accuracy:  0.7681037386325362

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0002.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.6188745107501745
AUROC: 0.8439092243949919
AUPRC: 0.7038522596473498
Sensitivity: 0.7614213197969543
Specificity: 0.7693389592123769
Threshold: 0.09
Accuracy:  0.7670144063586687

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.94it/s]
Loss: 0.5845235376268305
AUROC: 0.8356721018112475
AUPRC: 0.685793946262318
Sensitivity: 0.743933588761175
Specificity: 0.7774473924977127
Threshold: 0.09
Accuracy:  0.7686089592455372

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0003.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.01it/s]
Loss: 0.5594642832875252
AUROC: 0.8444994181356065
AUPRC: 0.7036180263074421
Sensitivity: 0.7580372250423012
Specificity: 0.770745428973277
Threshold: 0.13
Accuracy:  0.7670144063586687

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.99it/s]
Loss: 0.5263452331225077
AUROC: 0.8364290521710781
AUPRC: 0.6859264841317675
Sensitivity: 0.7669220945083014
Specificity: 0.7532021957913998
Threshold: 0.12
Accuracy:  0.7568204782755137

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0004.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.6887757051736116
AUROC: 0.8445969904878855
AUPRC: 0.7051873753968106
Sensitivity: 0.7563451776649747
Specificity: 0.770042194092827
Threshold: 0.06
Accuracy:  0.7660208643815202

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.98it/s]
Loss: 0.6475222804533538
AUROC: 0.8365605052002818
AUPRC: 0.6867500180052803
Sensitivity: 0.7413793103448276
Specificity: 0.7785910338517841
Threshold: 0.06
Accuracy:  0.7687773661165376

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0005.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.97it/s]
Loss: 0.6148317214101553
AUROC: 0.8442138405191799
AUPRC: 0.7031469682887265
Sensitivity: 0.7715736040609137
Specificity: 0.7538677918424754
Threshold: 0.08
Accuracy:  0.7590660705414803

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.00it/s]
Loss: 0.5854584542653893
AUROC: 0.8360076721830201
AUPRC: 0.6844581964482671
Sensitivity: 0.7573435504469987
Specificity: 0.7614364135407137
Threshold: 0.08
Accuracy:  0.7603570225665207

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0006.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.4914833512157202
AUROC: 0.8416198438366401
AUPRC: 0.6958998477313448
Sensitivity: 0.7766497461928934
Specificity: 0.7559774964838256
Threshold: 0.22
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.98it/s]
Loss: 0.4657003677660419
AUROC: 0.8334311197811688
AUPRC: 0.6778288458325537
Sensitivity: 0.7656449553001277
Specificity: 0.7486276303751144
Threshold: 0.21
Accuracy:  0.7531155271135063

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0007.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.97it/s]
Loss: 0.5581374727189541
AUROC: 0.8440329746954435
AUPRC: 0.69708905784915
Sensitivity: 0.7732656514382402
Specificity: 0.7566807313642757
Threshold: 0.12
Accuracy:  0.7615499254843517

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.80it/s]
Loss: 0.5312457959498128
AUROC: 0.8360376142618942
AUPRC: 0.6819208987299442
Sensitivity: 0.7528735632183908
Specificity: 0.7708142726440989
Threshold: 0.12
Accuracy:  0.7660828561805322

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0008.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.6266479920595884
AUROC: 0.8430001356493678
AUPRC: 0.697911298916922
Sensitivity: 0.7766497461928934
Specificity: 0.750351617440225
Threshold: 0.08
Accuracy:  0.7580725285643318

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.97it/s]
Loss: 0.5933536364827104
AUROC: 0.8358078635786305
AUPRC: 0.6813402983670921
Sensitivity: 0.7611749680715197
Specificity: 0.7607502287282708
Threshold: 0.08
Accuracy:  0.7608622431795218

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0009.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.00it/s]
Loss: 0.520869929343462
AUROC: 0.8414104202512606
AUPRC: 0.6892261574074118
Sensitivity: 0.7681895093062606
Specificity: 0.7587904360056259
Threshold: 0.17
Accuracy:  0.7615499254843517

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.00it/s]
Loss: 0.4933055035209143
AUROC: 0.8337301754226069
AUPRC: 0.6715719168018046
Sensitivity: 0.7662835249042146
Specificity: 0.7518298261665142
Threshold: 0.16
Accuracy:  0.7556416301785113

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0010.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.95it/s]
Loss: 0.5133786406368017
AUROC: 0.839015137993484
AUPRC: 0.6880893846277897
Sensitivity: 0.7563451776649747
Specificity: 0.7693389592123769
Threshold: 0.18
Accuracy:  0.7655240933929458

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.97it/s]
Loss: 0.48889950847113006
AUROC: 0.8325136506667881
AUPRC: 0.6711349022500124
Sensitivity: 0.756066411238825
Specificity: 0.7568618481244281
Threshold: 0.17
Accuracy:  0.7566520714045133

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0011.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.98it/s]
Loss: 0.518339148722589
AUROC: 0.8394708722730313
AUPRC: 0.6859153191084193
Sensitivity: 0.7698815566835872
Specificity: 0.7587904360056259
Threshold: 0.17
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.98it/s]
Loss: 0.49395838379859924
AUROC: 0.8325615579929868
AUPRC: 0.670272006096885
Sensitivity: 0.7675606641123882
Specificity: 0.7481701738334858
Threshold: 0.16
Accuracy:  0.7532839339845065

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0012.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.96it/s]
Loss: 0.5404798742383718
AUROC: 0.8401384099514281
AUPRC: 0.6858116013075735
Sensitivity: 0.766497461928934
Specificity: 0.7623066104078763
Threshold: 0.14
Accuracy:  0.7635370094386488

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.96it/s]
Loss: 0.513706670493208
AUROC: 0.833293313188887
AUPRC: 0.6721372210093274
Sensitivity: 0.7701149425287356
Specificity: 0.7472552607502287
Threshold: 0.13
Accuracy:  0.7532839339845065

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0013.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.98it/s]
Loss: 0.5041192369535565
AUROC: 0.8381703042115559
AUPRC: 0.6772486716537414
Sensitivity: 0.7580372250423012
Specificity: 0.770745428973277
Threshold: 0.2
Accuracy:  0.7670144063586687

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.01it/s]
Loss: 0.47952803536768884
AUROC: 0.8313620491015041
AUPRC: 0.6652886015509288
Sensitivity: 0.756066411238825
Specificity: 0.7607502287282708
Threshold: 0.19
Accuracy:  0.7595149882115191

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0014.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.00it/s]
Loss: 0.5316373780369759
AUROC: 0.8392888165425595
AUPRC: 0.6764651657763411
Sensitivity: 0.7614213197969543
Specificity: 0.7686357243319268
Threshold: 0.15
Accuracy:  0.7665176353700944

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.98it/s]
Loss: 0.5063928008399984
AUROC: 0.8329329858299477
AUPRC: 0.6674316330699301
Sensitivity: 0.7579821200510856
Specificity: 0.7639524245196706
Threshold: 0.14
Accuracy:  0.7623779050185248

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0015.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.98it/s]
Loss: 0.5091555025428534
AUROC: 0.8388830583458868
AUPRC: 0.6727040399790881
Sensitivity: 0.7732656514382402
Specificity: 0.7637130801687764
Threshold: 0.17
Accuracy:  0.7665176353700944

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.01it/s]
Loss: 0.48630453646183014
AUROC: 0.8319318979831015
AUPRC: 0.6634965004365173
Sensitivity: 0.7624521072796935
Specificity: 0.7568618481244281
Threshold: 0.16
Accuracy:  0.7583361401145167

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0016.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.5048929313197732
AUROC: 0.8381429363566483
AUPRC: 0.669697288223973
Sensitivity: 0.7631133671742809
Specificity: 0.770745428973277
Threshold: 0.18
Accuracy:  0.7685047193243915

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.94it/s]
Loss: 0.48352465177735976
AUROC: 0.8313202032205408
AUPRC: 0.6634402143111997
Sensitivity: 0.7669220945083014
Specificity: 0.7513723696248856
Threshold: 0.16
Accuracy:  0.755473223307511

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0017.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.97it/s]
Loss: 0.5575045375153422
AUROC: 0.8370410827199364
AUPRC: 0.666743699360096
Sensitivity: 0.7580372250423012
Specificity: 0.7672292545710268
Threshold: 0.13
Accuracy:  0.7645305514157973

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.98it/s]
Loss: 0.5282872913665669
AUROC: 0.8312710543935107
AUPRC: 0.6592310126101462
Sensitivity: 0.756066411238825
Specificity: 0.7591491308325709
Threshold: 0.12
Accuracy:  0.7583361401145167

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0018.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.97it/s]
Loss: 0.5196538157761097
AUROC: 0.835576307529016
AUPRC: 0.6601908620093747
Sensitivity: 0.7614213197969543
Specificity: 0.7644163150492265
Threshold: 0.16
Accuracy:  0.7635370094386488

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.98it/s]
Loss: 0.49547193800249406
AUROC: 0.8302668262798558
AUPRC: 0.6569843938159027
Sensitivity: 0.7528735632183908
Specificity: 0.7621225983531564
Threshold: 0.15
Accuracy:  0.7596833950825194

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0019.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.5079067153856158
AUROC: 0.832884738494197
AUPRC: 0.6504317962721005
Sensitivity: 0.7648054145516074
Specificity: 0.7510548523206751
Threshold: 0.17
Accuracy:  0.7550919026328863

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.00it/s]
Loss: 0.48543493641961005
AUROC: 0.8277106490975311
AUPRC: 0.6481363348138288
Sensitivity: 0.7662835249042146
Specificity: 0.7451967063129002
Threshold: 0.16
Accuracy:  0.7507578309195015

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0020.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.98it/s]
Loss: 0.5883653573691845
AUROC: 0.8360689289173514
AUPRC: 0.6664501608629404
Sensitivity: 0.7631133671742809
Specificity: 0.7616033755274262
Threshold: 0.1
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.97it/s]
Loss: 0.555440770041558
AUROC: 0.8308926157283257
AUPRC: 0.6603362333961589
Sensitivity: 0.7650063856960408
Specificity: 0.7477127172918573
Threshold: 0.09
Accuracy:  0.7522734927585045

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0021.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.93it/s]
Loss: 0.5217627193778753
AUROC: 0.8317543270958421
AUPRC: 0.6535891787694574
Sensitivity: 0.7580372250423012
Specificity: 0.7538677918424754
Threshold: 0.15
Accuracy:  0.7550919026328863

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.00it/s]
Loss: 0.49619566609141647
AUROC: 0.8271334242404059
AUPRC: 0.6491880411255395
Sensitivity: 0.7586206896551724
Specificity: 0.7479414455626715
Threshold: 0.14
Accuracy:  0.7507578309195015

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0022.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.97it/s]
Loss: 0.5272159725427628
AUROC: 0.8324539922560871
AUPRC: 0.6532368192629198
Sensitivity: 0.7495769881556683
Specificity: 0.7566807313642757
Threshold: 0.15
Accuracy:  0.754595131644312

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.99it/s]
Loss: 0.499032300326132
AUROC: 0.8269972973257195
AUPRC: 0.6487662281069777
Sensitivity: 0.7515964240102171
Specificity: 0.7513723696248856
Threshold: 0.14
Accuracy:  0.7514314584035029

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0023.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.00it/s]
Loss: 0.5290951859205961
AUROC: 0.8295934564648823
AUPRC: 0.6448438094790141
Sensitivity: 0.7580372250423012
Specificity: 0.7510548523206751
Threshold: 0.15
Accuracy:  0.7531048186785891

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.01it/s]
Loss: 0.49941013705345894
AUROC: 0.8246190199095838
AUPRC: 0.6427656730035359
Sensitivity: 0.7573435504469987
Specificity: 0.742451967063129
Threshold: 0.14
Accuracy:  0.7463792522734928

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0024.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.4867169288918376
AUROC: 0.8266377281348688
AUPRC: 0.63974427985106
Sensitivity: 0.7461928934010152
Specificity: 0.7587904360056259
Threshold: 0.22
Accuracy:  0.7550919026328863

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.97it/s]
Loss: 0.4633105379599397
AUROC: 0.8215328679311864
AUPRC: 0.6359079438435626
Sensitivity: 0.7547892720306514
Specificity: 0.742451967063129
Threshold: 0.2
Accuracy:  0.7457056247894914

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0025.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.00it/s]
Loss: 0.5235918704420328
AUROC: 0.827181515512814
AUPRC: 0.6391229995021879
Sensitivity: 0.7631133671742809
Specificity: 0.7447257383966245
Threshold: 0.15
Accuracy:  0.7501241927471436

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.81it/s]
Loss: 0.49682915755497514
AUROC: 0.822831185682954
AUPRC: 0.6368047136232587
Sensitivity: 0.7407407407407407
Specificity: 0.7596065873741995
Threshold: 0.15
Accuracy:  0.7546311889525092

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0026.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.5559361949563026
AUROC: 0.8293257274494825
AUPRC: 0.6444829114612721
Sensitivity: 0.766497461928934
Specificity: 0.749648382559775
Threshold: 0.12
Accuracy:  0.754595131644312

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.98it/s]
Loss: 0.5219385772943497
AUROC: 0.8243371261914026
AUPRC: 0.6416607679323537
Sensitivity: 0.7452107279693486
Specificity: 0.7589204025617566
Threshold: 0.12
Accuracy:  0.7553048164365106

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0027.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.59301130566746
AUROC: 0.8282333930666514
AUPRC: 0.6408964034738058
Sensitivity: 0.7478849407783418
Specificity: 0.7573839662447257
Threshold: 0.1
Accuracy:  0.754595131644312

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.01it/s]
Loss: 0.5609023031047595
AUROC: 0.8226444493520242
AUPRC: 0.6380275609015812
Sensitivity: 0.7535121328224776
Specificity: 0.744053064958829
Threshold: 0.09
Accuracy:  0.7465476591444931

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0028.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.5536226183176041
AUROC: 0.8255334946846866
AUPRC: 0.6381118761999424
Sensitivity: 0.7648054145516074
Specificity: 0.7426160337552743
Threshold: 0.12
Accuracy:  0.7491306507699951

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.98it/s]
Loss: 0.5222321809619985
AUROC: 0.8216351822055831
AUPRC: 0.6388820353190934
Sensitivity: 0.7445721583652618
Specificity: 0.7543458371454712
Threshold: 0.12
Accuracy:  0.7517682721455036

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0029.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.49720275215804577
AUROC: 0.8188236106054009
AUPRC: 0.6197629118682718
Sensitivity: 0.7461928934010152
Specificity: 0.7559774964838256
Threshold: 0.21
Accuracy:  0.7531048186785891

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.00it/s]
Loss: 0.4704400578173258
AUROC: 0.8139945479125844
AUPRC: 0.6202086018175118
Sensitivity: 0.7318007662835249
Specificity: 0.7520585544373285
Threshold: 0.2
Accuracy:  0.7467160660154935

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0030.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.97it/s]
Loss: 0.512459141202271
AUROC: 0.8126908312926432
AUPRC: 0.6116172886533497
Sensitivity: 0.7478849407783418
Specificity: 0.7320675105485233
Threshold: 0.18
Accuracy:  0.7367113760556383

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.96it/s]
Loss: 0.4830471778749138
AUROC: 0.8104816847955
AUPRC: 0.6136977516125358
Sensitivity: 0.7273307790549169
Specificity: 0.7472552607502287
Threshold: 0.18
Accuracy:  0.742000673627484

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0031.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.553742915391922
AUROC: 0.8224635353081026
AUPRC: 0.6330680398522384
Sensitivity: 0.7461928934010152
Specificity: 0.7623066104078763
Threshold: 0.13
Accuracy:  0.7575757575757576

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.01it/s]
Loss: 0.5194363143815789
AUROC: 0.8191622586084207
AUPRC: 0.6336712306770148
Sensitivity: 0.7413793103448276
Specificity: 0.7527447392497713
Threshold: 0.12
Accuracy:  0.7497473896934995

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0032.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.5836970824748278
AUROC: 0.8143055347321877
AUPRC: 0.6171738570178262
Sensitivity: 0.7529610829103215
Specificity: 0.7341772151898734
Threshold: 0.11
Accuracy:  0.739692001987084

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.99it/s]
Loss: 0.5425226093940837
AUROC: 0.8120645983554934
AUPRC: 0.6173889665187194
Sensitivity: 0.7337164750957854
Specificity: 0.744967978042086
Threshold: 0.11
Accuracy:  0.742000673627484

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0033.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.5364847844466567
AUROC: 0.8103122077291581
AUPRC: 0.6067258304249864
Sensitivity: 0.751269035532995
Specificity: 0.7362869198312236
Threshold: 0.15
Accuracy:  0.7406855439642325

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.00it/s]
Loss: 0.5044095556261718
AUROC: 0.8075894260351779
AUPRC: 0.6067844189752694
Sensitivity: 0.7458492975734355
Specificity: 0.7296431838975297
Threshold: 0.14
Accuracy:  0.7339171438194678

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0034.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.00it/s]
Loss: 0.545304749161005
AUROC: 0.8128609879557641
AUPRC: 0.6100207829479387
Sensitivity: 0.751269035532995
Specificity: 0.7306610407876231
Threshold: 0.14
Accuracy:  0.7367113760556383

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.97it/s]
Loss: 0.5101205197072798
AUROC: 0.8091160338809958
AUPRC: 0.6114067983710492
Sensitivity: 0.7292464878671775
Specificity: 0.7438243366880146
Threshold: 0.14
Accuracy:  0.73997979117548

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0035.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.96it/s]
Loss: 0.571790112182498
AUROC: 0.8117662737594629
AUPRC: 0.6142136646301545
Sensitivity: 0.7377326565143824
Specificity: 0.7376933895921237
Threshold: 0.12
Accuracy:  0.7377049180327869

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.00it/s]
Loss: 0.5313834626508015
AUROC: 0.8099377613724397
AUPRC: 0.6151631222967712
Sensitivity: 0.7503192848020435
Specificity: 0.7259835315645013
Threshold: 0.11
Accuracy:  0.7324014819804648

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0036.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.01it/s]
Loss: 0.5385623443871737
AUROC: 0.8154811625864766
AUPRC: 0.6210948356255034
Sensitivity: 0.7428087986463621
Specificity: 0.7454289732770746
Threshold: 0.14
Accuracy:  0.7446597118728266

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.98it/s]
Loss: 0.5084809213876724
AUROC: 0.8130606471695534
AUPRC: 0.6209855482375385
Sensitivity: 0.7426564495530013
Specificity: 0.7419945105215004
Threshold: 0.13
Accuracy:  0.7421690804984843

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0037.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.559109921567142
AUROC: 0.8127384275620477
AUPRC: 0.6144733455630634
Sensitivity: 0.7360406091370558
Specificity: 0.7447257383966245
Threshold: 0.13
Accuracy:  0.7421758569299552

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.01it/s]
Loss: 0.5211192335813276
AUROC: 0.8098688215615685
AUPRC: 0.6150208961692049
Sensitivity: 0.7432950191570882
Specificity: 0.7376486733760292
Threshold: 0.12
Accuracy:  0.7391377568204782

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0038.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.5417888509109616
AUROC: 0.8128217210335056
AUPRC: 0.6156575110424463
Sensitivity: 0.7309644670050761
Specificity: 0.7433192686357243
Threshold: 0.14
Accuracy:  0.739692001987084

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.98it/s]
Loss: 0.509077093614045
AUROC: 0.8095432562259075
AUPRC: 0.6166316792519284
Sensitivity: 0.7381864623243933
Specificity: 0.7410795974382434
Threshold: 0.13
Accuracy:  0.7403166049174806

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0039.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.5642576860263944
AUROC: 0.8083072148804976
AUPRC: 0.6106183725566844
Sensitivity: 0.7377326565143824
Specificity: 0.729254571026723
Threshold: 0.12
Accuracy:  0.7317436661698957

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.97it/s]
Loss: 0.5268486659693462
AUROC: 0.806094805093133
AUPRC: 0.6117236089007423
Sensitivity: 0.7273307790549169
Specificity: 0.742451967063129
Threshold: 0.12
Accuracy:  0.738464129336477

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0040.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.5200430816039443
AUROC: 0.8085927924969241
AUPRC: 0.609434075492504
Sensitivity: 0.7292724196277496
Specificity: 0.7369901547116737
Threshold: 0.17
Accuracy:  0.7347242921013413

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.98it/s]
Loss: 0.4879892438009221
AUROC: 0.8054807733878309
AUPRC: 0.6103772122787999
Sensitivity: 0.7330779054916986
Specificity: 0.7371912168344007
Threshold: 0.16
Accuracy:  0.7361064331424723

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0041.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.00it/s]
Loss: 0.6101553980261087
AUROC: 0.8102384335115813
AUPRC: 0.6143541897529086
Sensitivity: 0.7360406091370558
Specificity: 0.7468354430379747
Threshold: 0.09
Accuracy:  0.7436661698956781

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.86it/s]
Loss: 0.5766774755652233
AUROC: 0.806139572152523
AUPRC: 0.6119249825634597
Sensitivity: 0.7337164750957854
Specificity: 0.7319304666056725
Threshold: 0.08
Accuracy:  0.7324014819804648

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0042.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.548278234899044
AUROC: 0.798659451072225
AUPRC: 0.5960013669081141
Sensitivity: 0.7208121827411168
Specificity: 0.7320675105485233
Threshold: 0.15
Accuracy:  0.7287630402384501

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.97it/s]
Loss: 0.5093564081897017
AUROC: 0.7973973614747979
AUPRC: 0.5960359224955111
Sensitivity: 0.7286079182630907
Specificity: 0.7259835315645013
Threshold: 0.14
Accuracy:  0.7266756483664534

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0043.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.98it/s]
Loss: 0.5554710384458303
AUROC: 0.8061856111717964
AUPRC: 0.6063713443347365
Sensitivity: 0.727580372250423
Specificity: 0.7440225035161744
Threshold: 0.13
Accuracy:  0.7391952309985097

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.01it/s]
Loss: 0.5211678421305072
AUROC: 0.8045826570805276
AUPRC: 0.6092860794836935
Sensitivity: 0.7318007662835249
Specificity: 0.7394784995425434
Threshold: 0.12
Accuracy:  0.737453688110475

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0044.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.94it/s]
Loss: 0.5293287187814713
AUROC: 0.8002717746982991
AUPRC: 0.6024061165974506
Sensitivity: 0.7309644670050761
Specificity: 0.7376933895921237
Threshold: 0.17
Accuracy:  0.7357178340784898

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.98it/s]
Loss: 0.49146804341705896
AUROC: 0.8022373889806139
AUPRC: 0.6071014592502775
Sensitivity: 0.7381864623243933
Specificity: 0.7287282708142726
Threshold: 0.16
Accuracy:  0.7312226338834624


Plot AUROC/AUPRC for Each Intermediate Model
  Epoch with best Validation Loss:      24, 0.4825
  Epoch with best model Test AUROC:      4, 0.8366
  Epoch with best model Test Accuracy:   4, 0.7688

AUROC/AUPRC Plots - Best Model Based on Validation Loss
  Epoch with best Validation Loss:   24, 0.4825
  Best Model Based on Validation Loss:
    ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0024.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.99it/s]
Loss: 0.4633105379599397
AUROC: 0.8215328679311864
AUPRC: 0.6359079438435626
Sensitivity: 0.7547892720306514
Specificity: 0.742451967063129
Threshold: 0.2
Accuracy:  0.7457056247894914
<Figure size 640x480 with 0 Axes>
best_model_val_test_auroc: 0.8215328679311864
best_model_val_test_auprc: 0.6359079438435626

AUROC/AUPRC Plots - Best Model Based on Model AUROC
  Epoch with best model Test AUROC:   4, 0.8366
  Best Model Based on Model AUROC:
    ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_3914bdd4_0004.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.99it/s]
Loss: 0.6475222804533538
AUROC: 0.8365605052002818
AUPRC: 0.6867500180052803
Sensitivity: 0.7413793103448276
Specificity: 0.7785910338517841
Threshold: 0.06
Accuracy:  0.7687773661165376
best_model_auroc_test_auroc: 0.8365605052002818
best_model_auroc_test_auprc: 0.6867500180052803

Total Processing Time: 3573.9110 sec
In [104]:
RUN_ME = True

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=False, 
        useEeg=True, 
        useEcg=True,
        nResiduals=12, 
        skip_connection=False,
        batch_size=64,
        learning_rate=1e-4,
        weight_decay=0.0,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
Experiment Setup
  name:              EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726
  prediction_window: 003
  max_cases:         _ALL
  use_abp:           False
  use_eeg:           True
  use_ecg:           True
  n_residuals:       12
  skip_connection:   False
  batch_size:        64
  learning_rate:     0.0001
  weight_decay:      0.0
  balance_labels:    False
  max_epochs:        200
  patience:          20
  device:            mps

Model Architecture
HypotensionCNN(
  (ecgResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
  )
  (ecgFc): Linear(in_features=2814, out_features=32, bias=True)
  (eegResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
    )
  )
  (eegFc): Linear(in_features=720, out_features=32, bias=True)
  (fullLinear1): Linear(in_features=64, out_features=16, bias=True)
  (fullLinear2): Linear(in_features=16, out_features=1, bias=True)
  (sigmoid): Sigmoid()
)

Training Loop
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.73it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.91it/s]
[2024-05-03 03:52:00.039159] Completed epoch 0 with training loss 0.59752339, validation loss 0.60446572
Validation loss improved to 0.60446572. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.73it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.92it/s]
[2024-05-03 03:52:56.011384] Completed epoch 1 with training loss 0.58981180, validation loss 0.60569537
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.74it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.91it/s]
[2024-05-03 03:53:51.805700] Completed epoch 2 with training loss 0.58492351, validation loss 0.60474491
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.73it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.90it/s]
[2024-05-03 03:54:47.755279] Completed epoch 3 with training loss 0.58103985, validation loss 0.60425866
Validation loss improved to 0.60425866. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.73it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.88it/s]
[2024-05-03 03:55:43.744785] Completed epoch 4 with training loss 0.57823664, validation loss 0.60111493
Validation loss improved to 0.60111493. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.74it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.89it/s]
[2024-05-03 03:56:39.568612] Completed epoch 5 with training loss 0.57633722, validation loss 0.61193144
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.74it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.87it/s]
[2024-05-03 03:57:35.402205] Completed epoch 6 with training loss 0.57332313, validation loss 0.60842299
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.73it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.91it/s]
[2024-05-03 03:58:31.303208] Completed epoch 7 with training loss 0.56968081, validation loss 0.60568798
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.74it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.90it/s]
[2024-05-03 03:59:27.075296] Completed epoch 8 with training loss 0.56690180, validation loss 0.60567802
No improvement in validation loss. 4 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.73it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.93it/s]
[2024-05-03 04:00:22.944191] Completed epoch 9 with training loss 0.56599033, validation loss 0.61000907
No improvement in validation loss. 5 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.73it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.87it/s]
[2024-05-03 04:01:18.863537] Completed epoch 10 with training loss 0.56422466, validation loss 0.60700494
No improvement in validation loss. 6 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.74it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.92it/s]
[2024-05-03 04:02:14.655061] Completed epoch 11 with training loss 0.56026715, validation loss 0.60554606
No improvement in validation loss. 7 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.74it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.94it/s]
[2024-05-03 04:03:10.432193] Completed epoch 12 with training loss 0.55976671, validation loss 0.60867381
No improvement in validation loss. 8 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.74it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.86it/s]
[2024-05-03 04:04:06.277188] Completed epoch 13 with training loss 0.55672330, validation loss 0.60835248
No improvement in validation loss. 9 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.75it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.93it/s]
[2024-05-03 04:05:01.929153] Completed epoch 14 with training loss 0.55752522, validation loss 0.61450040
No improvement in validation loss. 10 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.74it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.93it/s]
[2024-05-03 04:05:57.632324] Completed epoch 15 with training loss 0.55494165, validation loss 0.61390901
No improvement in validation loss. 11 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.73it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.93it/s]
[2024-05-03 04:06:53.469087] Completed epoch 16 with training loss 0.55211133, validation loss 0.61895913
No improvement in validation loss. 12 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.75it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.93it/s]
[2024-05-03 04:07:49.050041] Completed epoch 17 with training loss 0.55145013, validation loss 0.61590576
No improvement in validation loss. 13 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.74it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.93it/s]
[2024-05-03 04:08:44.868394] Completed epoch 18 with training loss 0.55131060, validation loss 0.62177539
No improvement in validation loss. 14 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.69it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.92it/s]
[2024-05-03 04:09:41.324046] Completed epoch 19 with training loss 0.54795086, validation loss 0.63049495
No improvement in validation loss. 15 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.74it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.91it/s]
[2024-05-03 04:10:37.095537] Completed epoch 20 with training loss 0.54894853, validation loss 0.61979634
No improvement in validation loss. 16 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.73it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.87it/s]
[2024-05-03 04:11:33.028600] Completed epoch 21 with training loss 0.54570287, validation loss 0.62323654
No improvement in validation loss. 17 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:50<00:00,  3.67it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
[2024-05-03 04:12:29.885277] Completed epoch 22 with training loss 0.54510939, validation loss 0.64087141
No improvement in validation loss. 18 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.70it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.88it/s]
[2024-05-03 04:13:26.255369] Completed epoch 23 with training loss 0.54403967, validation loss 0.63174945
No improvement in validation loss. 19 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.73it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.87it/s]
[2024-05-03 04:14:22.229795] Completed epoch 24 with training loss 0.54338151, validation loss 0.62941051
No improvement in validation loss. 20 epochs without improvement.
Early stopping due to no improvement in validation loss.

Plot Validation and Loss Values from Training
  Epoch with best Validation Loss:    4, 0.6011
Generate AUROC/AUPRC for Each Intermediate Model

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0000.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:05<00:00,  5.47it/s]
Loss: 0.6044713221490383
AUROC: 0.5309756521283862
AUPRC: 0.3239351775294558
Sensitivity: 0.5228426395939086
Specificity: 0.4936708860759494
Threshold: 0.3
Accuracy:  0.5022354694485842

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.82it/s]
Loss: 0.5820828339745922
AUROC: 0.5220458414688153
AUPRC: 0.2811652383648239
Sensitivity: 0.5676883780332056
Specificity: 0.46431838975297346
Threshold: 0.3
Accuracy:  0.49157965644998314

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0001.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.88it/s]
Loss: 0.6051097689196467
AUROC: 0.5347173138569399
AUPRC: 0.32809751967375855
Sensitivity: 0.5617597292724196
Specificity: 0.47538677918424754
Threshold: 0.3
Accuracy:  0.5007451564828614

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.91it/s]
Loss: 0.5809668837695994
AUROC: 0.5256873824955979
AUPRC: 0.2836898087907197
Sensitivity: 0.5881226053639846
Specificity: 0.44967978042086004
Threshold: 0.3
Accuracy:  0.4861906365779724

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0002.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.89it/s]
Loss: 0.6028058901429176
AUROC: 0.541877577635465
AUPRC: 0.3319942955492473
Sensitivity: 0.5109983079526227
Specificity: 0.5281293952180028
Threshold: 0.28
Accuracy:  0.5230998509687034

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.88it/s]
Loss: 0.5782694422429607
AUROC: 0.5311505703892996
AUPRC: 0.2868473172458488
Sensitivity: 0.5440613026819924
Specificity: 0.5054894784995425
Threshold: 0.28
Accuracy:  0.5156618390030313

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0003.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.90it/s]
Loss: 0.6020865309983492
AUROC: 0.5480020276010766
AUPRC: 0.33183952640142933
Sensitivity: 0.5329949238578681
Specificity: 0.5175808720112518
Threshold: 0.28
Accuracy:  0.5221063089915549

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.92it/s]
Loss: 0.5785952258494592
AUROC: 0.5342308069813828
AUPRC: 0.2854569792357489
Sensitivity: 0.5791826309067688
Specificity: 0.4890210430009149
Threshold: 0.28
Accuracy:  0.5127989221960256

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0004.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.91it/s]
Loss: 0.6032605394721031
AUROC: 0.5573404156582207
AUPRC: 0.33595955607733996
Sensitivity: 0.5211505922165821
Specificity: 0.5611814345991561
Threshold: 0.28
Accuracy:  0.5494287133631396

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.90it/s]
Loss: 0.5798512908720201
AUROC: 0.5354729650778962
AUPRC: 0.2867291123692314
Sensitivity: 0.5530012771392082
Specificity: 0.5157822506861848
Threshold: 0.28
Accuracy:  0.5255978443920512

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0005.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.91it/s]
Loss: 0.6076744925230742
AUROC: 0.5670988407928587
AUPRC: 0.34160654375503857
Sensitivity: 0.5634517766497462
Specificity: 0.540084388185654
Threshold: 0.25
Accuracy:  0.5469448584202683

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.93it/s]
Loss: 0.5819027436676846
AUROC: 0.5384438035378976
AUPRC: 0.28875079301304896
Sensitivity: 0.5038314176245211
Specificity: 0.5656450137236962
Threshold: 0.26
Accuracy:  0.5493432132030986

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0006.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.90it/s]
Loss: 0.6137552289292216
AUROC: 0.5680793239425893
AUPRC: 0.34125692600420565
Sensitivity: 0.5363790186125211
Specificity: 0.5738396624472574
Threshold: 0.25
Accuracy:  0.5628415300546448

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.91it/s]
Loss: 0.5843149119166917
AUROC: 0.5380303107315917
AUPRC: 0.28904282903486633
Sensitivity: 0.5530012771392082
Specificity: 0.5203568161024703
Threshold: 0.25
Accuracy:  0.5289659818120579

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0007.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.89it/s]
Loss: 0.6060820575803518
AUROC: 0.572386786323688
AUPRC: 0.34409528833645586
Sensitivity: 0.5905245346869712
Specificity: 0.5182841068917018
Threshold: 0.26
Accuracy:  0.5394932935916542

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.90it/s]
Loss: 0.5827427368651155
AUROC: 0.5414827784847029
AUPRC: 0.29082746104566704
Sensitivity: 0.5472541507024266
Specificity: 0.529277218664227
Threshold: 0.27
Accuracy:  0.534018187942068

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0008.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.91it/s]
Loss: 0.6097389413043857
AUROC: 0.5747106741773579
AUPRC: 0.3410165888336079
Sensitivity: 0.5482233502538071
Specificity: 0.569620253164557
Threshold: 0.26
Accuracy:  0.563338301043219

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.88it/s]
Loss: 0.5830539000290696
AUROC: 0.5431794719444182
AUPRC: 0.291594602084003
Sensitivity: 0.5715197956577267
Specificity: 0.5089204025617566
Threshold: 0.26
Accuracy:  0.5254294375210509

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0009.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.88it/s]
Loss: 0.6094281654804945
AUROC: 0.5782185192324626
AUPRC: 0.34180092483854685
Sensitivity: 0.5685279187817259
Specificity: 0.5618846694796061
Threshold: 0.25
Accuracy:  0.5638350720317934

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.91it/s]
Loss: 0.584711181540643
AUROC: 0.5450702777105907
AUPRC: 0.2917324797830879
Sensitivity: 0.5178799489144317
Specificity: 0.5615279048490394
Threshold: 0.26
Accuracy:  0.5500168406871

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0010.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.90it/s]
Loss: 0.6069764345884323
AUROC: 0.5806756766404649
AUPRC: 0.3439217160510819
Sensitivity: 0.5634517766497462
Specificity: 0.5541490857946554
Threshold: 0.27
Accuracy:  0.5568802781917536

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.89it/s]
Loss: 0.584310721646073
AUROC: 0.5453309198557171
AUPRC: 0.29203348070733426
Sensitivity: 0.5185185185185185
Specificity: 0.5601555352241537
Threshold: 0.28
Accuracy:  0.5491748063320984

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0011.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.88it/s]
Loss: 0.6057392992079258
AUROC: 0.5821583004324121
AUPRC: 0.3450667461393431
Sensitivity: 0.5313028764805414
Specificity: 0.5787623066104078
Threshold: 0.28
Accuracy:  0.5648286140089419

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.90it/s]
Loss: 0.5851223430325908
AUROC: 0.5452183814568268
AUPRC: 0.2923551345781664
Sensitivity: 0.5542784163473818
Specificity: 0.5224153705397987
Threshold: 0.28
Accuracy:  0.5308184573930617

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0012.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.89it/s]
Loss: 0.6105764945968986
AUROC: 0.5778782059062211
AUPRC: 0.3409864883180724
Sensitivity: 0.5532994923857868
Specificity: 0.5661040787623066
Threshold: 0.26
Accuracy:  0.5623447590660705

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.86it/s]
Loss: 0.5871954412870509
AUROC: 0.5444061477952697
AUPRC: 0.2912226541553148
Sensitivity: 0.5651340996168582
Specificity: 0.5118938700823422
Threshold: 0.26
Accuracy:  0.5259346581340518

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0013.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.87it/s]
Loss: 0.605959395878017
AUROC: 0.5787492176363216
AUPRC: 0.3430237384874886
Sensitivity: 0.544839255499154
Specificity: 0.5590717299578059
Threshold: 0.28
Accuracy:  0.5548931942374565

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.85it/s]
Loss: 0.5879483988849066
AUROC: 0.5426081624736072
AUPRC: 0.2908542433517307
Sensitivity: 0.5574712643678161
Specificity: 0.5141811527904849
Threshold: 0.28
Accuracy:  0.5255978443920512

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0014.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.88it/s]
Loss: 0.6108223125338554
AUROC: 0.5791157089107355
AUPRC: 0.34250935437951013
Sensitivity: 0.5499153976311336
Specificity: 0.559774964838256
Threshold: 0.27
Accuracy:  0.5568802781917536

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.90it/s]
Loss: 0.5897925470464973
AUROC: 0.5422573289445549
AUPRC: 0.29091653574807885
Sensitivity: 0.5108556832694764
Specificity: 0.5594693504117109
Threshold: 0.28
Accuracy:  0.5466487032670932

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0015.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.90it/s]
Loss: 0.6105934400111437
AUROC: 0.5788682083098327
AUPRC: 0.3423226334638845
Sensitivity: 0.571912013536379
Specificity: 0.5428973277074542
Threshold: 0.28
Accuracy:  0.5514157973174366

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.91it/s]
Loss: 0.5912843586937073
AUROC: 0.5419282581947819
AUPRC: 0.2896703200636994
Sensitivity: 0.5357598978288634
Specificity: 0.542772186642269
Threshold: 0.29
Accuracy:  0.5409228696530819

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0016.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.88it/s]
Loss: 0.6176992636173964
AUROC: 0.5775438421136552
AUPRC: 0.3411043339850676
Sensitivity: 0.5363790186125211
Specificity: 0.5639943741209564
Threshold: 0.26
Accuracy:  0.555886736214605

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.88it/s]
Loss: 0.5926954054063366
AUROC: 0.5420997313684319
AUPRC: 0.2906872839659669
Sensitivity: 0.5561941251596424
Specificity: 0.5164684354986276
Threshold: 0.26
Accuracy:  0.5269450993600538

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0017.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.88it/s]
Loss: 0.616245910525322
AUROC: 0.575500772249471
AUPRC: 0.34221248703926527
Sensitivity: 0.5346869712351946
Specificity: 0.5717299578059072
Threshold: 0.28
Accuracy:  0.5608544461003477

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.89it/s]
Loss: 0.5936602648868355
AUROC: 0.5419230731030743
AUPRC: 0.2895729793689282
Sensitivity: 0.5555555555555556
Specificity: 0.5244739249771272
Threshold: 0.28
Accuracy:  0.5326709329740653

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0018.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.89it/s]
Loss: 0.6193196820095181
AUROC: 0.5754924429023253
AUPRC: 0.3411903825264966
Sensitivity: 0.5752961082910322
Specificity: 0.5541490857946554
Threshold: 0.26
Accuracy:  0.5603576751117735

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.89it/s]
Loss: 0.5943549925922066
AUROC: 0.5414429043991779
AUPRC: 0.2903373884165475
Sensitivity: 0.5268199233716475
Specificity: 0.5443732845379688
Threshold: 0.27
Accuracy:  0.5397440215560795

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0019.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.88it/s]
Loss: 0.633265576325357
AUROC: 0.5735743132453279
AUPRC: 0.33853937035721327
Sensitivity: 0.5397631133671743
Specificity: 0.5731364275668073
Threshold: 0.24
Accuracy:  0.563338301043219

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.90it/s]
Loss: 0.6002447544246592
AUROC: 0.5410989356394285
AUPRC: 0.2903978778677409
Sensitivity: 0.5498084291187739
Specificity: 0.52516010978957
Threshold: 0.24
Accuracy:  0.5316604917480633

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0020.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.89it/s]
Loss: 0.6231340896338224
AUROC: 0.572311822199376
AUPRC: 0.3392913576598082
Sensitivity: 0.5634517766497462
Specificity: 0.5471167369901547
Threshold: 0.27
Accuracy:  0.5519125683060109

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.89it/s]
Loss: 0.5964457309374245
AUROC: 0.5386482129983092
AUPRC: 0.2887739745585887
Sensitivity: 0.5217113665389528
Specificity: 0.5384263494967978
Threshold: 0.28
Accuracy:  0.534018187942068

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0021.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.87it/s]
Loss: 0.620681625790894
AUROC: 0.5700260113612294
AUPRC: 0.3375625210503961
Sensitivity: 0.5685279187817259
Specificity: 0.5372714486638537
Threshold: 0.28
Accuracy:  0.546448087431694

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.88it/s]
Loss: 0.5991821093584901
AUROC: 0.5369506431850659
AUPRC: 0.2878923141454345
Sensitivity: 0.5344827586206896
Specificity: 0.5265324794144556
Threshold: 0.29
Accuracy:  0.5286291680700572

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0022.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.87it/s]
Loss: 0.6405647806823254
AUROC: 0.5678615710100643
AUPRC: 0.33448976519130524
Sensitivity: 0.544839255499154
Specificity: 0.549929676511955
Threshold: 0.23
Accuracy:  0.5484351713859911

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.88it/s]
Loss: 0.60540844099496
AUROC: 0.5395880291276544
AUPRC: 0.2886646385389605
Sensitivity: 0.520434227330779
Specificity: 0.5521500457456542
Threshold: 0.24
Accuracy:  0.5437857864600876

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0023.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.88it/s]
Loss: 0.629399448633194
AUROC: 0.5700224416410242
AUPRC: 0.3355426695655793
Sensitivity: 0.5313028764805414
Specificity: 0.5590717299578059
Threshold: 0.25
Accuracy:  0.5509190263288624

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.91it/s]
Loss: 0.6023404649508897
AUROC: 0.53887109891227
AUPRC: 0.2888146854006998
Sensitivity: 0.5146871008939975
Specificity: 0.5539798719121684
Threshold: 0.26
Accuracy:  0.5436173795890872

Intermediate Model:
  ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0024.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.88it/s]
Loss: 0.6347387889400125
AUROC: 0.5697856502007372
AUPRC: 0.33759729615593326
Sensitivity: 0.5279187817258884
Specificity: 0.5682137834036568
Threshold: 0.26
Accuracy:  0.5563835072031793

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.88it/s]
Loss: 0.6014164961794372
AUROC: 0.5391107816021846
AUPRC: 0.2884365048571109
Sensitivity: 0.5485312899106003
Specificity: 0.5194419030192132
Threshold: 0.26
Accuracy:  0.5271135062310542


Plot AUROC/AUPRC for Each Intermediate Model
  Epoch with best Validation Loss:       4, 0.6011
  Epoch with best model Test AUROC:     10, 0.5453
  Epoch with best model Test Accuracy:   9, 0.55

AUROC/AUPRC Plots - Best Model Based on Validation Loss
  Epoch with best Validation Loss:    4, 0.6011
  Best Model Based on Validation Loss:
    ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0004.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.85it/s]
Loss: 0.5798512908720201
AUROC: 0.5354729650778962
AUPRC: 0.2867291123692314
Sensitivity: 0.5530012771392082
Specificity: 0.5157822506861848
Threshold: 0.28
Accuracy:  0.5255978443920512
<Figure size 640x480 with 0 Axes>
best_model_val_test_auroc: 0.5354729650778962
best_model_val_test_auprc: 0.2867291123692314

AUROC/AUPRC Plots - Best Model Based on Model AUROC
  Epoch with best model Test AUROC:  10, 0.5453
  Best Model Based on Model AUROC:
    ./vitaldb_cache/models/EEG_ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_79fee726_0010.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.86it/s]
Loss: 0.584310721646073
AUROC: 0.5453309198557171
AUPRC: 0.29203348070733426
Sensitivity: 0.5185185185185185
Specificity: 0.5601555352241537
Threshold: 0.28
Accuracy:  0.5491748063320984
best_model_auroc_test_auroc: 0.5453309198557171
best_model_auroc_test_auprc: 0.29203348070733426

Total Processing Time: 2101.2990 sec
In [105]:
RUN_ME = True

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=False, 
        useEeg=True, 
        useEcg=False,
        nResiduals=12, 
        skip_connection=False,
        batch_size=64,
        learning_rate=1e-4,
        weight_decay=0.0,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
Experiment Setup
  name:              EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd
  prediction_window: 003
  max_cases:         _ALL
  use_abp:           False
  use_eeg:           True
  use_ecg:           False
  n_residuals:       12
  skip_connection:   False
  batch_size:        64
  learning_rate:     0.0001
  weight_decay:      0.0
  balance_labels:    False
  max_epochs:        200
  patience:          20
  device:            mps

Model Architecture
HypotensionCNN(
  (eegResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(3,), stride=(1,), padding=(1,), bias=False)
    )
  )
  (eegFc): Linear(in_features=720, out_features=32, bias=True)
  (fullLinear1): Linear(in_features=32, out_features=16, bias=True)
  (fullLinear2): Linear(in_features=16, out_features=1, bias=True)
  (sigmoid): Sigmoid()
)

Training Loop
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.53it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.28it/s]
[2024-05-03 04:26:52.160968] Completed epoch 0 with training loss 0.63661206, validation loss 0.61338371
Validation loss improved to 0.61338371. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.53it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.28it/s]
[2024-05-03 04:27:38.874341] Completed epoch 1 with training loss 0.59534109, validation loss 0.60548973
Validation loss improved to 0.60548973. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.54it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.29it/s]
[2024-05-03 04:28:25.533997] Completed epoch 2 with training loss 0.59008425, validation loss 0.60290301
Validation loss improved to 0.60290301. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.54it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.29it/s]
[2024-05-03 04:29:12.177529] Completed epoch 3 with training loss 0.58660990, validation loss 0.60550100
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.53it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.30it/s]
[2024-05-03 04:29:58.878550] Completed epoch 4 with training loss 0.58528095, validation loss 0.60142422
Validation loss improved to 0.60142422. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.51it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.30it/s]
[2024-05-03 04:30:45.788320] Completed epoch 5 with training loss 0.58556360, validation loss 0.60244793
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.52it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.26it/s]
[2024-05-03 04:31:32.624250] Completed epoch 6 with training loss 0.58162558, validation loss 0.60284162
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:41<00:00,  4.46it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.27it/s]
[2024-05-03 04:32:20.006842] Completed epoch 7 with training loss 0.58127362, validation loss 0.59903944
Validation loss improved to 0.59903944. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.51it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.22it/s]
[2024-05-03 04:33:07.026684] Completed epoch 8 with training loss 0.57976663, validation loss 0.60090727
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.50it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.27it/s]
[2024-05-03 04:33:53.998203] Completed epoch 9 with training loss 0.57663119, validation loss 0.59891558
Validation loss improved to 0.59891558. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.52it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.27it/s]
[2024-05-03 04:34:40.841980] Completed epoch 10 with training loss 0.57310021, validation loss 0.59729981
Validation loss improved to 0.59729981. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.55it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.29it/s]
[2024-05-03 04:35:27.402302] Completed epoch 11 with training loss 0.57295966, validation loss 0.59744358
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.54it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.31it/s]
[2024-05-03 04:36:13.961760] Completed epoch 12 with training loss 0.57186645, validation loss 0.59810328
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.57it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.32it/s]
[2024-05-03 04:37:00.283054] Completed epoch 13 with training loss 0.57073534, validation loss 0.59739977
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.57it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:05<00:00,  5.34it/s]
[2024-05-03 04:37:46.588655] Completed epoch 14 with training loss 0.56714708, validation loss 0.59567964
Validation loss improved to 0.59567964. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.55it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.26it/s]
[2024-05-03 04:38:33.177950] Completed epoch 15 with training loss 0.56761169, validation loss 0.59713721
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.59it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.32it/s]
[2024-05-03 04:39:19.291149] Completed epoch 16 with training loss 0.56703341, validation loss 0.59605587
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.57it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.20it/s]
[2024-05-03 04:40:05.704889] Completed epoch 17 with training loss 0.56633019, validation loss 0.59953374
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.54it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.30it/s]
[2024-05-03 04:40:52.286578] Completed epoch 18 with training loss 0.56485087, validation loss 0.60204464
No improvement in validation loss. 4 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.55it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.28it/s]
[2024-05-03 04:41:38.783426] Completed epoch 19 with training loss 0.56512499, validation loss 0.60245526
No improvement in validation loss. 5 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.53it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.29it/s]
[2024-05-03 04:42:25.467153] Completed epoch 20 with training loss 0.56230974, validation loss 0.60434192
No improvement in validation loss. 6 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.55it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.29it/s]
[2024-05-03 04:43:12.003111] Completed epoch 21 with training loss 0.56349981, validation loss 0.60313100
No improvement in validation loss. 7 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.53it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.26it/s]
[2024-05-03 04:43:58.776137] Completed epoch 22 with training loss 0.56183088, validation loss 0.60668719
No improvement in validation loss. 8 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.52it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.24it/s]
[2024-05-03 04:44:45.609451] Completed epoch 23 with training loss 0.56124622, validation loss 0.60906309
No improvement in validation loss. 9 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.53it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.22it/s]
[2024-05-03 04:45:32.357647] Completed epoch 24 with training loss 0.55994362, validation loss 0.60366207
No improvement in validation loss. 10 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.52it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.26it/s]
[2024-05-03 04:46:19.169729] Completed epoch 25 with training loss 0.55902904, validation loss 0.60785043
No improvement in validation loss. 11 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.52it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.26it/s]
[2024-05-03 04:47:05.991735] Completed epoch 26 with training loss 0.56110805, validation loss 0.61101615
No improvement in validation loss. 12 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.53it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.25it/s]
[2024-05-03 04:47:52.739731] Completed epoch 27 with training loss 0.55968577, validation loss 0.61582410
No improvement in validation loss. 13 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:41<00:00,  4.44it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.25it/s]
[2024-05-03 04:48:40.292873] Completed epoch 28 with training loss 0.55962986, validation loss 0.61423957
No improvement in validation loss. 14 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.53it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.25it/s]
[2024-05-03 04:49:27.076048] Completed epoch 29 with training loss 0.55747348, validation loss 0.61110055
No improvement in validation loss. 15 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.52it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.27it/s]
[2024-05-03 04:50:13.913714] Completed epoch 30 with training loss 0.55656320, validation loss 0.61432463
No improvement in validation loss. 16 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.52it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.26it/s]
[2024-05-03 04:51:00.774042] Completed epoch 31 with training loss 0.55597287, validation loss 0.61394876
No improvement in validation loss. 17 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.52it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.27it/s]
[2024-05-03 04:51:47.559654] Completed epoch 32 with training loss 0.55755609, validation loss 0.62218302
No improvement in validation loss. 18 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.53it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.25it/s]
[2024-05-03 04:52:34.329414] Completed epoch 33 with training loss 0.55681342, validation loss 0.61697972
No improvement in validation loss. 19 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:40<00:00,  4.53it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.24it/s]
[2024-05-03 04:53:21.079711] Completed epoch 34 with training loss 0.55612165, validation loss 0.61868763
No improvement in validation loss. 20 epochs without improvement.
Early stopping due to no improvement in validation loss.

Plot Validation and Loss Values from Training
  Epoch with best Validation Loss:   14, 0.5957
Generate AUROC/AUPRC for Each Intermediate Model

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0000.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:05<00:00,  6.02it/s]
Loss: 0.6141650844365358
AUROC: 0.5183013605393609
AUPRC: 0.3205265966264843
Sensitivity: 0.4957698815566836
Specificity: 0.509142053445851
Threshold: 0.35000000000000003
Accuracy:  0.5052160953800298

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.18it/s]
Loss: 0.6016037579505674
AUROC: 0.5101349555221373
AUPRC: 0.2810630856502994
Sensitivity: 0.5466155810983397
Specificity: 0.4730100640439158
Threshold: 0.35000000000000003
Accuracy:  0.4924216908049848

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0001.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.20it/s]
Loss: 0.6044107805937529
AUROC: 0.5344007986654006
AUPRC: 0.3303843686550846
Sensitivity: 0.5786802030456852
Specificity: 0.4613220815752461
Threshold: 0.3
Accuracy:  0.49577744659711875

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.20it/s]
Loss: 0.5831042457652348
AUROC: 0.5236140030777536
AUPRC: 0.2862331806665511
Sensitivity: 0.46551724137931033
Specificity: 0.5807410795974383
Threshold: 0.31
Accuracy:  0.5503536544291007

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0002.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.24it/s]
Loss: 0.6026125773787498
AUROC: 0.5488516210099452
AUPRC: 0.3367761326675514
Sensitivity: 0.5803722504230119
Specificity: 0.4873417721518987
Threshold: 0.29
Accuracy:  0.5146547441629409

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.18it/s]
Loss: 0.5792365481135666
AUROC: 0.5316234361471293
AUPRC: 0.2921042267083144
Sensitivity: 0.5798212005108557
Specificity: 0.46889295516925894
Threshold: 0.29
Accuracy:  0.4981475244189963

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0003.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.20it/s]
Loss: 0.6046890094876289
AUROC: 0.5512129909257713
AUPRC: 0.3360588069943252
Sensitivity: 0.48392554991539766
Specificity: 0.5836849507735584
Threshold: 0.3
Accuracy:  0.5543964232488823

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.22it/s]
Loss: 0.5795132671633074
AUROC: 0.5342288351859447
AUPRC: 0.29493701475908335
Sensitivity: 0.5
Specificity: 0.5681610247026533
Threshold: 0.3
Accuracy:  0.5501852475581004

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0004.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.22it/s]
Loss: 0.603586133569479
AUROC: 0.5582935309530438
AUPRC: 0.33974583265214586
Sensitivity: 0.4754653130287648
Specificity: 0.6146272855133614
Threshold: 0.31
Accuracy:  0.5737704918032787

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.20it/s]
Loss: 0.5803866110822206
AUROC: 0.5414050751385515
AUPRC: 0.2988196291580791
Sensitivity: 0.45721583652618136
Specificity: 0.6225983531564502
Threshold: 0.31
Accuracy:  0.578982822499158

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0005.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.18it/s]
Loss: 0.6023571006953716
AUROC: 0.5619524941635075
AUPRC: 0.3427502313761474
Sensitivity: 0.4754653130287648
Specificity: 0.6033755274261603
Threshold: 0.3
Accuracy:  0.5658221559860904

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.23it/s]
Loss: 0.5786493138600421
AUROC: 0.5416248207857035
AUPRC: 0.30104601544384185
Sensitivity: 0.48020434227330777
Specificity: 0.5910338517840805
Threshold: 0.3
Accuracy:  0.5618053216571236

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0006.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.24it/s]
Loss: 0.6056117992848158
AUROC: 0.5697606621593
AUPRC: 0.34542975061716574
Sensitivity: 0.571912013536379
Specificity: 0.5246132208157525
Threshold: 0.26
Accuracy:  0.5384997516145057

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.17it/s]
Loss: 0.576227113123863
AUROC: 0.5451917987331434
AUPRC: 0.3018834157759577
Sensitivity: 0.5644955300127714
Specificity: 0.5116651418115279
Threshold: 0.26
Accuracy:  0.5255978443920512

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0007.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.21it/s]
Loss: 0.6007787045091391
AUROC: 0.5754823286950769
AUPRC: 0.3504197287388526
Sensitivity: 0.6057529610829103
Specificity: 0.48523206751054854
Threshold: 0.3
Accuracy:  0.5206159960258321

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.21it/s]
Loss: 0.5794667418925993
AUROC: 0.5464523602537452
AUPRC: 0.30146469890158045
Sensitivity: 0.6008939974457216
Specificity: 0.47209515096065874
Threshold: 0.3
Accuracy:  0.5060626473560121

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0008.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.23it/s]
Loss: 0.6014285963028669
AUROC: 0.5814586352721673
AUPRC: 0.35432408323485565
Sensitivity: 0.55668358714044
Specificity: 0.5436005625879043
Threshold: 0.3
Accuracy:  0.5474416294088426

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.20it/s]
Loss: 0.5781825546936322
AUROC: 0.5502233094848327
AUPRC: 0.3019466827245265
Sensitivity: 0.5510855683269477
Specificity: 0.532708142726441
Threshold: 0.3
Accuracy:  0.5375547322330751

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0009.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.20it/s]
Loss: 0.6004287758842111
AUROC: 0.5916811240334983
AUPRC: 0.3623707223468373
Sensitivity: 0.6175972927241963
Specificity: 0.5267229254571026
Threshold: 0.27
Accuracy:  0.5534028812717338

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.23it/s]
Loss: 0.5748749657343792
AUROC: 0.5567055504727051
AUPRC: 0.30400620920046756
Sensitivity: 0.5932311621966795
Specificity: 0.5089204025617566
Threshold: 0.27
Accuracy:  0.5311552711350623

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0010.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.22it/s]
Loss: 0.5936149191111326
AUROC: 0.5956066263526265
AUPRC: 0.3634192597875375
Sensitivity: 0.6091370558375635
Specificity: 0.5485232067510548
Threshold: 0.28
Accuracy:  0.5663189269746647

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.20it/s]
Loss: 0.575979475052126
AUROC: 0.5546049310660315
AUPRC: 0.3015131646516741
Sensitivity: 0.570242656449553
Specificity: 0.5215004574565416
Threshold: 0.28
Accuracy:  0.5343550016840687

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0011.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.19it/s]
Loss: 0.5969545543193817
AUROC: 0.5982404849107927
AUPRC: 0.3653341355028371
Sensitivity: 0.55668358714044
Specificity: 0.5942334739803095
Threshold: 0.29
Accuracy:  0.5832091405861898

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.21it/s]
Loss: 0.5766188922107861
AUROC: 0.5560569758325067
AUPRC: 0.30186176284375293
Sensitivity: 0.5217113665389528
Specificity: 0.568847209515096
Threshold: 0.29
Accuracy:  0.5564163017851128

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0012.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.20it/s]
Loss: 0.5950953401625156
AUROC: 0.6007101363395136
AUPRC: 0.36492260138836663
Sensitivity: 0.5752961082910322
Specificity: 0.5935302390998594
Threshold: 0.29
Accuracy:  0.5881768504719325

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.19it/s]
Loss: 0.5777847699580654
AUROC: 0.5567079604449071
AUPRC: 0.29903860804687643
Sensitivity: 0.5287356321839081
Specificity: 0.5558096980786825
Threshold: 0.29
Accuracy:  0.5486695857190973

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0013.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.22it/s]
Loss: 0.5970131326466799
AUROC: 0.6011170844429213
AUPRC: 0.3651148959205678
Sensitivity: 0.5651438240270727
Specificity: 0.5949367088607594
Threshold: 0.29
Accuracy:  0.5861897665176353

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.23it/s]
Loss: 0.5779396144933598
AUROC: 0.5578417428217882
AUPRC: 0.30224410595752566
Sensitivity: 0.5236270753512133
Specificity: 0.5587831655992681
Threshold: 0.29
Accuracy:  0.549511620074099

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0014.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.23it/s]
Loss: 0.5961790420114994
AUROC: 0.5978055739991099
AUPRC: 0.3605457658779099
Sensitivity: 0.6057529610829103
Specificity: 0.5548523206751055
Threshold: 0.3
Accuracy:  0.5697963238946846

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.20it/s]
Loss: 0.5808101139401877
AUROC: 0.5570704786876665
AUPRC: 0.30146017575489037
Sensitivity: 0.570242656449553
Specificity: 0.5176120768526989
Threshold: 0.3
Accuracy:  0.531492084877063

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0015.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.22it/s]
Loss: 0.5992833226919174
AUROC: 0.5960599808187034
AUPRC: 0.3612498947284134
Sensitivity: 0.5769881556683587
Specificity: 0.5794655414908579
Threshold: 0.3
Accuracy:  0.5787382016890213

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.23it/s]
Loss: 0.5808956738441221
AUROC: 0.5576444902485223
AUPRC: 0.300473235884332
Sensitivity: 0.5389527458492975
Specificity: 0.5487191216834401
Threshold: 0.3
Accuracy:  0.5461434826540923

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0016.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.14it/s]
Loss: 0.5993283996358514
AUROC: 0.5946713596588299
AUPRC: 0.3573124255268805
Sensitivity: 0.5854483925549916
Specificity: 0.5668073136427567
Threshold: 0.31
Accuracy:  0.5722801788375559

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.20it/s]
Loss: 0.5828358550225535
AUROC: 0.5581478092914506
AUPRC: 0.30072907852010583
Sensitivity: 0.5593869731800766
Specificity: 0.5322506861848124
Threshold: 0.31
Accuracy:  0.5394072078140788

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0017.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.19it/s]
Loss: 0.5990998018532991
AUROC: 0.5940383292757514
AUPRC: 0.35723721434711353
Sensitivity: 0.6057529610829103
Specificity: 0.5534458509142054
Threshold: 0.29
Accuracy:  0.568802781917536

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.24it/s]
Loss: 0.581361949123362
AUROC: 0.5569266836796098
AUPRC: 0.29763239089006444
Sensitivity: 0.5287356321839081
Specificity: 0.5677035681610247
Threshold: 0.3
Accuracy:  0.5574267430111148

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0018.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.23it/s]
Loss: 0.6016355836763978
AUROC: 0.5934481355351368
AUPRC: 0.35725875796843554
Sensitivity: 0.5854483925549916
Specificity: 0.569620253164557
Threshold: 0.29
Accuracy:  0.5742672627918529

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.20it/s]
Loss: 0.5815770180635554
AUROC: 0.5576950996647656
AUPRC: 0.2989021951536264
Sensitivity: 0.5689655172413793
Specificity: 0.5315645013723697
Threshold: 0.29
Accuracy:  0.5414280902660829

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0019.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.23it/s]
Loss: 0.5995805626735091
AUROC: 0.5897487154956795
AUPRC: 0.3561709262305643
Sensitivity: 0.5786802030456852
Specificity: 0.5731364275668073
Threshold: 0.3
Accuracy:  0.5747640337804272

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.23it/s]
Loss: 0.5832556095174564
AUROC: 0.5568090332184725
AUPRC: 0.2973049213691541
Sensitivity: 0.558109833971903
Specificity: 0.5368252516010978
Threshold: 0.3
Accuracy:  0.5424385314920849

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0020.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.24it/s]
Loss: 0.6052857795730233
AUROC: 0.5867358716423807
AUPRC: 0.351526243767546
Sensitivity: 0.5989847715736041
Specificity: 0.5464135021097046
Threshold: 0.29
Accuracy:  0.5618479880774963

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.19it/s]
Loss: 0.5843683244079672
AUROC: 0.5551515565791365
AUPRC: 0.29729972389346426
Sensitivity: 0.5312899106002554
Specificity: 0.5615279048490394
Threshold: 0.3
Accuracy:  0.5535533849781071

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0021.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.19it/s]
Loss: 0.6061707902699709
AUROC: 0.5841763822551588
AUPRC: 0.35199499771989684
Sensitivity: 0.5956006768189509
Specificity: 0.5414908579465542
Threshold: 0.3
Accuracy:  0.5573770491803278

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.23it/s]
Loss: 0.5859160961643342
AUROC: 0.5541322113671232
AUPRC: 0.29728318838423257
Sensitivity: 0.533205619412516
Specificity: 0.5571820677035682
Threshold: 0.31
Accuracy:  0.5508588750421017

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0022.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.23it/s]
Loss: 0.6064798645675182
AUROC: 0.5839645788563093
AUPRC: 0.35039300387194666
Sensitivity: 0.5922165820642978
Specificity: 0.5443037974683544
Threshold: 0.29
Accuracy:  0.5583705911574764

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.22it/s]
Loss: 0.5859226437025172
AUROC: 0.5530361852214077
AUPRC: 0.29531228619343086
Sensitivity: 0.5293742017879949
Specificity: 0.5546660567246111
Threshold: 0.3
Accuracy:  0.547995958235096

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0023.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.22it/s]
Loss: 0.607782213948667
AUROC: 0.5829008022351208
AUPRC: 0.3488008484787364
Sensitivity: 0.5702199661590525
Specificity: 0.5548523206751055
Threshold: 0.29
Accuracy:  0.559364133134625

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.24it/s]
Loss: 0.5860756693347808
AUROC: 0.553137111936052
AUPRC: 0.2965320152630533
Sensitivity: 0.5689655172413793
Specificity: 0.5194419030192132
Threshold: 0.29
Accuracy:  0.532502526103065

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0024.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.24it/s]
Loss: 0.6064228611066937
AUROC: 0.5829495884112603
AUPRC: 0.348848643968491
Sensitivity: 0.5803722504230119
Specificity: 0.5428973277074542
Threshold: 0.29
Accuracy:  0.553899652260308

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.20it/s]
Loss: 0.5875331189042778
AUROC: 0.5523432086691228
AUPRC: 0.29689907360376266
Sensitivity: 0.5293742017879949
Specificity: 0.5608417200365965
Threshold: 0.3
Accuracy:  0.5525429437521051

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0025.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.23it/s]
Loss: 0.6087799929082394
AUROC: 0.5809600643501562
AUPRC: 0.3453608638137303
Sensitivity: 0.5397631133671743
Specificity: 0.5745428973277075
Threshold: 0.31
Accuracy:  0.5643318430203677

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.21it/s]
Loss: 0.5900383694197542
AUROC: 0.5490398670746969
AUPRC: 0.29485976513304063
Sensitivity: 0.5446998722860792
Specificity: 0.5466605672461117
Threshold: 0.31
Accuracy:  0.5461434826540923

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0026.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.23it/s]
Loss: 0.6098607406020164
AUROC: 0.5822142260489623
AUPRC: 0.34750561322765317
Sensitivity: 0.5583756345177665
Specificity: 0.5661040787623066
Threshold: 0.28
Accuracy:  0.5638350720317934

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.20it/s]
Loss: 0.5888382000948793
AUROC: 0.5503793734422816
AUPRC: 0.295136203064865
Sensitivity: 0.5593869731800766
Specificity: 0.5311070448307411
Threshold: 0.28
Accuracy:  0.5385651734590772

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0027.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.23it/s]
Loss: 0.6129484046250582
AUROC: 0.581643665769477
AUPRC: 0.34671656190446326
Sensitivity: 0.5516074450084603
Specificity: 0.569620253164557
Threshold: 0.29
Accuracy:  0.5643318430203677

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.23it/s]
Loss: 0.5891279840982089
AUROC: 0.5504128209352679
AUPRC: 0.2970253063938088
Sensitivity: 0.5408684546615581
Specificity: 0.5459743824336688
Threshold: 0.29
Accuracy:  0.5446278208150892

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0028.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.22it/s]
Loss: 0.612693702802062
AUROC: 0.5786694938850693
AUPRC: 0.34473108691223964
Sensitivity: 0.5769881556683587
Specificity: 0.540084388185654
Threshold: 0.28
Accuracy:  0.5509190263288624

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.20it/s]
Loss: 0.5887591377381356
AUROC: 0.5506231457819936
AUPRC: 0.2962621926707574
Sensitivity: 0.5319284802043422
Specificity: 0.5535224153705398
Threshold: 0.29
Accuracy:  0.5478275513640957

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0029.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.20it/s]
Loss: 0.6093532908707857
AUROC: 0.5762123364770669
AUPRC: 0.344093715520696
Sensitivity: 0.5752961082910322
Specificity: 0.5407876230661041
Threshold: 0.29
Accuracy:  0.5509190263288624

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.23it/s]
Loss: 0.5897298641102289
AUROC: 0.5491968804151345
AUPRC: 0.2955071054466424
Sensitivity: 0.5319284802043422
Specificity: 0.5532936870997255
Threshold: 0.3
Accuracy:  0.5476591444930953

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0030.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.22it/s]
Loss: 0.6111234147101641
AUROC: 0.5744203369339911
AUPRC: 0.3396868426873748
Sensitivity: 0.5532994923857868
Specificity: 0.5618846694796061
Threshold: 0.3
Accuracy:  0.559364133134625

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.19it/s]
Loss: 0.5912380689574827
AUROC: 0.5492965656289472
AUPRC: 0.29590038696207066
Sensitivity: 0.5549169859514687
Specificity: 0.5322506861848124
Threshold: 0.3
Accuracy:  0.5382283597170765

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0031.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.25it/s]
Loss: 0.6150239817798138
AUROC: 0.5732875457221663
AUPRC: 0.3383341795828968
Sensitivity: 0.5702199661590525
Specificity: 0.5513361462728551
Threshold: 0.31
Accuracy:  0.5568802781917536

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.25it/s]
Loss: 0.5946434383751243
AUROC: 0.5478743168824249
AUPRC: 0.2950187618975768
Sensitivity: 0.5242656449553001
Specificity: 0.562900274473925
Threshold: 0.32
Accuracy:  0.5527113506231054

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0032.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.26it/s]
Loss: 0.6148576838895679
AUROC: 0.5718644172669746
AUPRC: 0.3378620697530065
Sensitivity: 0.583756345177665
Specificity: 0.5358649789029536
Threshold: 0.28
Accuracy:  0.5499254843517138

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.23it/s]
Loss: 0.5919182117908232
AUROC: 0.547951435992891
AUPRC: 0.2939429073072423
Sensitivity: 0.5389527458492975
Specificity: 0.5471180237877402
Threshold: 0.29
Accuracy:  0.5449646345570899

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0033.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.24it/s]
Loss: 0.6186250941827893
AUROC: 0.5702116368119066
AUPRC: 0.3373019082267458
Sensitivity: 0.5583756345177665
Specificity: 0.5611814345991561
Threshold: 0.3
Accuracy:  0.5603576751117735

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.23it/s]
Loss: 0.5940285693573696
AUROC: 0.5475193937035752
AUPRC: 0.295028407285058
Sensitivity: 0.5542784163473818
Specificity: 0.5324794144556267
Threshold: 0.3
Accuracy:  0.5382283597170765

Intermediate Model:
  ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0034.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.24it/s]
Loss: 0.6207912862300873
AUROC: 0.5698487152576982
AUPRC: 0.3380816650625932
Sensitivity: 0.5363790186125211
Specificity: 0.5654008438818565
Threshold: 0.28
Accuracy:  0.5568802781917536

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.24it/s]
Loss: 0.5919218188331973
AUROC: 0.5498803631375326
AUPRC: 0.29607998862187057
Sensitivity: 0.5504469987228607
Specificity: 0.5430009149130832
Threshold: 0.28
Accuracy:  0.5449646345570899


Plot AUROC/AUPRC for Each Intermediate Model
  Epoch with best Validation Loss:      14, 0.5957
  Epoch with best model Test AUROC:     16, 0.5581
  Epoch with best model Test Accuracy:   4, 0.579

AUROC/AUPRC Plots - Best Model Based on Validation Loss
  Epoch with best Validation Loss:   14, 0.5957
  Best Model Based on Validation Loss:
    ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0014.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.23it/s]
Loss: 0.5808101139401877
AUROC: 0.5570704786876665
AUPRC: 0.30146017575489037
Sensitivity: 0.570242656449553
Specificity: 0.5176120768526989
Threshold: 0.3
Accuracy:  0.531492084877063
<Figure size 640x480 with 0 Axes>
best_model_val_test_auroc: 0.5570704786876665
best_model_val_test_auprc: 0.30146017575489037

AUROC/AUPRC Plots - Best Model Based on Model AUROC
  Epoch with best model Test AUROC:  16, 0.5581
  Best Model Based on Model AUROC:
    ./vitaldb_cache/models/EEG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_725079fd_0016.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:17<00:00,  5.20it/s]
Loss: 0.5828358550225535
AUROC: 0.5581478092914506
AUPRC: 0.30072907852010583
Sensitivity: 0.5593869731800766
Specificity: 0.5322506861848124
Threshold: 0.31
Accuracy:  0.5394072078140788
best_model_auroc_test_auroc: 0.5581478092914506
best_model_auroc_test_auprc: 0.30072907852010583

Total Processing Time: 2544.6620 sec
In [106]:
RUN_ME = True

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=False, 
        useEeg=False, 
        useEcg=True,
        nResiduals=12, 
        skip_connection=False,
        batch_size=64,
        learning_rate=1e-4,
        weight_decay=0.0,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
Experiment Setup
  name:              ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca
  prediction_window: 003
  max_cases:         _ALL
  use_abp:           False
  use_eeg:           False
  use_ecg:           True
  n_residuals:       12
  skip_connection:   False
  batch_size:        64
  learning_rate:     0.0001
  weight_decay:      0.0
  balance_labels:    False
  max_epochs:        200
  patience:          20
  device:            mps

Model Architecture
HypotensionCNN(
  (ecgResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
  )
  (ecgFc): Linear(in_features=2814, out_features=32, bias=True)
  (fullLinear1): Linear(in_features=32, out_features=16, bias=True)
  (fullLinear2): Linear(in_features=16, out_features=1, bias=True)
  (sigmoid): Sigmoid()
)

Training Loop
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.02it/s]
[2024-05-03 05:09:22.707361] Completed epoch 0 with training loss 0.60784280, validation loss 0.60681343
Validation loss improved to 0.60681343. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.03it/s]
[2024-05-03 05:10:15.360985] Completed epoch 1 with training loss 0.59225327, validation loss 0.60467982
Validation loss improved to 0.60467982. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.05it/s]
[2024-05-03 05:11:07.704572] Completed epoch 2 with training loss 0.59260458, validation loss 0.60917592
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
[2024-05-03 05:12:00.049484] Completed epoch 3 with training loss 0.58953434, validation loss 0.60497808
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  4.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.02it/s]
[2024-05-03 05:12:52.508194] Completed epoch 4 with training loss 0.58898252, validation loss 0.60511196
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.01it/s]
[2024-05-03 05:13:45.597193] Completed epoch 5 with training loss 0.58967334, validation loss 0.60828161
No improvement in validation loss. 4 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.07it/s]
[2024-05-03 05:14:37.830461] Completed epoch 6 with training loss 0.58975559, validation loss 0.60835576
No improvement in validation loss. 5 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.02it/s]
[2024-05-03 05:15:30.117069] Completed epoch 7 with training loss 0.58815217, validation loss 0.60821557
No improvement in validation loss. 6 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.03it/s]
[2024-05-03 05:16:22.607881] Completed epoch 8 with training loss 0.58834350, validation loss 0.60717005
No improvement in validation loss. 7 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.03it/s]
[2024-05-03 05:17:15.106874] Completed epoch 9 with training loss 0.58753538, validation loss 0.60792673
No improvement in validation loss. 8 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.97it/s]
[2024-05-03 05:18:07.753794] Completed epoch 10 with training loss 0.58737952, validation loss 0.60682505
No improvement in validation loss. 9 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.95it/s]
[2024-05-03 05:19:00.451200] Completed epoch 11 with training loss 0.58520716, validation loss 0.60453486
Validation loss improved to 0.60453486. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.04it/s]
[2024-05-03 05:19:52.864761] Completed epoch 12 with training loss 0.58556026, validation loss 0.61025226
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.02it/s]
[2024-05-03 05:20:45.516545] Completed epoch 13 with training loss 0.58561450, validation loss 0.61261886
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.04it/s]
[2024-05-03 05:21:38.080171] Completed epoch 14 with training loss 0.58556902, validation loss 0.60898399
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.02it/s]
[2024-05-03 05:22:30.619852] Completed epoch 15 with training loss 0.58414865, validation loss 0.61201000
No improvement in validation loss. 4 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.04it/s]
[2024-05-03 05:23:23.119728] Completed epoch 16 with training loss 0.58590829, validation loss 0.61258662
No improvement in validation loss. 5 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.03it/s]
[2024-05-03 05:24:15.761465] Completed epoch 17 with training loss 0.58400422, validation loss 0.60935515
No improvement in validation loss. 6 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.04it/s]
[2024-05-03 05:25:08.322907] Completed epoch 18 with training loss 0.58570433, validation loss 0.60943490
No improvement in validation loss. 7 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.02it/s]
[2024-05-03 05:26:00.891316] Completed epoch 19 with training loss 0.58344764, validation loss 0.60920292
No improvement in validation loss. 8 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.04it/s]
[2024-05-03 05:26:53.499044] Completed epoch 20 with training loss 0.58207321, validation loss 0.60899413
No improvement in validation loss. 9 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.03it/s]
[2024-05-03 05:27:46.039138] Completed epoch 21 with training loss 0.58156908, validation loss 0.60961115
No improvement in validation loss. 10 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  4.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.03it/s]
[2024-05-03 05:28:38.501041] Completed epoch 22 with training loss 0.57994342, validation loss 0.61250937
No improvement in validation loss. 11 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.01it/s]
[2024-05-03 05:29:31.094968] Completed epoch 23 with training loss 0.57744932, validation loss 0.60744679
No improvement in validation loss. 12 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.02it/s]
[2024-05-03 05:30:23.804084] Completed epoch 24 with training loss 0.57423598, validation loss 0.60924888
No improvement in validation loss. 13 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  4.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.04it/s]
[2024-05-03 05:31:16.236455] Completed epoch 25 with training loss 0.57218218, validation loss 0.60579622
No improvement in validation loss. 14 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.96it/s]
[2024-05-03 05:32:09.032510] Completed epoch 26 with training loss 0.56928867, validation loss 0.60524905
No improvement in validation loss. 15 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.03it/s]
[2024-05-03 05:33:01.619565] Completed epoch 27 with training loss 0.56854415, validation loss 0.60458624
No improvement in validation loss. 16 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  4.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.03it/s]
[2024-05-03 05:33:54.065604] Completed epoch 28 with training loss 0.56460047, validation loss 0.60197562
Validation loss improved to 0.60197562. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.04it/s]
[2024-05-03 05:34:46.677372] Completed epoch 29 with training loss 0.56287026, validation loss 0.61178803
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.02it/s]
[2024-05-03 05:35:39.225535] Completed epoch 30 with training loss 0.55944991, validation loss 0.60566467
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.03it/s]
[2024-05-03 05:36:31.832189] Completed epoch 31 with training loss 0.55708390, validation loss 0.60841715
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.01it/s]
[2024-05-03 05:37:24.316805] Completed epoch 32 with training loss 0.55669767, validation loss 0.60598624
No improvement in validation loss. 4 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.02it/s]
[2024-05-03 05:38:17.014531] Completed epoch 33 with training loss 0.55281687, validation loss 0.61090291
No improvement in validation loss. 5 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.96it/s]
[2024-05-03 05:39:09.711336] Completed epoch 34 with training loss 0.55155241, validation loss 0.60675764
No improvement in validation loss. 6 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  4.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.95it/s]
[2024-05-03 05:40:02.263666] Completed epoch 35 with training loss 0.54789621, validation loss 0.61061436
No improvement in validation loss. 7 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
[2024-05-03 05:40:54.937460] Completed epoch 36 with training loss 0.54335767, validation loss 0.61386359
No improvement in validation loss. 8 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.05it/s]
[2024-05-03 05:41:47.465109] Completed epoch 37 with training loss 0.54331827, validation loss 0.61534190
No improvement in validation loss. 9 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.03it/s]
[2024-05-03 05:42:39.959676] Completed epoch 38 with training loss 0.54301703, validation loss 0.63209713
No improvement in validation loss. 10 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.04it/s]
[2024-05-03 05:43:33.109499] Completed epoch 39 with training loss 0.53889239, validation loss 0.62041914
No improvement in validation loss. 11 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.04it/s]
[2024-05-03 05:44:25.724528] Completed epoch 40 with training loss 0.53895593, validation loss 0.63788408
No improvement in validation loss. 12 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.03it/s]
[2024-05-03 05:45:18.092393] Completed epoch 41 with training loss 0.53959662, validation loss 0.62225270
No improvement in validation loss. 13 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
[2024-05-03 05:46:10.735464] Completed epoch 42 with training loss 0.53670126, validation loss 0.62394935
No improvement in validation loss. 14 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.04it/s]
[2024-05-03 05:47:03.238744] Completed epoch 43 with training loss 0.53562379, validation loss 0.63053805
No improvement in validation loss. 15 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.92it/s]
[2024-05-03 05:47:56.012675] Completed epoch 44 with training loss 0.53060991, validation loss 0.63786638
No improvement in validation loss. 16 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.02it/s]
[2024-05-03 05:48:48.743954] Completed epoch 45 with training loss 0.52823466, validation loss 0.63213885
No improvement in validation loss. 17 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.06it/s]
[2024-05-03 05:49:40.993491] Completed epoch 46 with training loss 0.52468973, validation loss 0.64483607
No improvement in validation loss. 18 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.98it/s]
[2024-05-03 05:50:33.400613] Completed epoch 47 with training loss 0.52699912, validation loss 0.63861775
No improvement in validation loss. 19 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:45<00:00,  4.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.06it/s]
[2024-05-03 05:51:25.617592] Completed epoch 48 with training loss 0.52480960, validation loss 0.64018112
No improvement in validation loss. 20 epochs without improvement.
Early stopping due to no improvement in validation loss.

Plot Validation and Loss Values from Training
  Epoch with best Validation Loss:   28, 0.602
Generate AUROC/AUPRC for Each Intermediate Model

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0000.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:05<00:00,  5.63it/s]
Loss: 0.6047387830913067
AUROC: 0.5398351027246484
AUPRC: 0.310672800601661
Sensitivity: 0.5126903553299492
Specificity: 0.5548523206751055
Threshold: 0.29
Accuracy:  0.5424739195230999

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.95it/s]
Loss: 0.5779482895328153
AUROC: 0.5222824569213818
AUPRC: 0.2775860261184142
Sensitivity: 0.46934865900383144
Specificity: 0.5430009149130832
Threshold: 0.29
Accuracy:  0.5235769619400471

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0001.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.6051525250077248
AUROC: 0.5406222260299238
AUPRC: 0.314204423311615
Sensitivity: 0.16243654822335024
Specificity: 0.8445850914205345
Threshold: 0.31
Accuracy:  0.6443119721808246

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.96it/s]
Loss: 0.5810993701540014
AUROC: 0.5138514978050266
AUPRC: 0.2734974029712518
Sensitivity: 0.17177522349936142
Specificity: 0.8321134492223239
Threshold: 0.31
Accuracy:  0.6579656449983159

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0002.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.00it/s]
Loss: 0.6091475561261177
AUROC: 0.5279497193010012
AUPRC: 0.31120286763873295
Sensitivity: 0.8460236886632826
Specificity: 0.1589310829817159
Threshold: 0.33
Accuracy:  0.36065573770491804

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.99it/s]
Loss: 0.5879774452537618
AUROC: 0.507264824688398
AUPRC: 0.26928631059133523
Sensitivity: 0.8582375478927203
Specificity: 0.1438700823421775
Threshold: 0.33
Accuracy:  0.33226675648366455

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0003.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.00it/s]
Loss: 0.6085848528891802
AUROC: 0.5250743096756076
AUPRC: 0.30371323049910404
Sensitivity: 0.22165820642978004
Specificity: 0.7777777777777778
Threshold: 0.32
Accuracy:  0.6145057128663686

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.01it/s]
Loss: 0.5836939529706073
AUROC: 0.5089563330564056
AUPRC: 0.2698796036974426
Sensitivity: 0.2567049808429119
Specificity: 0.7573193046660567
Threshold: 0.32
Accuracy:  0.6252947120242506

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0004.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.6064513958990574
AUROC: 0.5198226563001992
AUPRC: 0.30075530728274513
Sensitivity: 0.505922165820643
Specificity: 0.5260196905766527
Threshold: 0.32
Accuracy:  0.5201192250372578

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.98it/s]
Loss: 0.5841516317218862
AUROC: 0.506017043323413
AUPRC: 0.26959299271767123
Sensitivity: 0.5159642401021711
Specificity: 0.4947392497712717
Threshold: 0.32
Accuracy:  0.5003368137420007

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0005.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.97it/s]
Loss: 0.6065646037459373
AUROC: 0.5248654810435958
AUPRC: 0.30908510461093
Sensitivity: 0.17597292724196278
Specificity: 0.8607594936708861
Threshold: 0.33
Accuracy:  0.6597118728266269

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.97it/s]
Loss: 0.5861548307121441
AUROC: 0.5150146380250965
AUPRC: 0.2723410070764478
Sensitivity: 0.1909323116219668
Specificity: 0.826395242451967
Threshold: 0.33
Accuracy:  0.6588076793533176

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0006.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.94it/s]
Loss: 0.6079040672630072
AUROC: 0.5193609724869765
AUPRC: 0.30981146209049026
Sensitivity: 0.19120135363790186
Specificity: 0.8248945147679325
Threshold: 0.34
Accuracy:  0.6388474913065078

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.99it/s]
Loss: 0.5893298772073561
AUROC: 0.5102327419699726
AUPRC: 0.27012770157076027
Sensitivity: 0.2081736909323116
Specificity: 0.8005489478499542
Threshold: 0.34
Accuracy:  0.6443246884472886

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0007.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.97it/s]
Loss: 0.6090990919619799
AUROC: 0.5145614836709098
AUPRC: 0.3127695937337182
Sensitivity: 0.739424703891709
Specificity: 0.26019690576652604
Threshold: 0.33
Accuracy:  0.4008941877794337

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.98it/s]
Loss: 0.587798374634917
AUROC: 0.5114522609336787
AUPRC: 0.26696307373472694
Sensitivity: 0.8001277139208174
Specificity: 0.21683440073193047
Threshold: 0.33
Accuracy:  0.37066352307174133

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0008.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.98it/s]
Loss: 0.6052236165851355
AUROC: 0.510558042460632
AUPRC: 0.2988873807593486
Sensitivity: 0.7580372250423012
Specificity: 0.2440225035161744
Threshold: 0.31
Accuracy:  0.3949329359165425

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.97it/s]
Loss: 0.5824145972728729
AUROC: 0.5120194077252317
AUPRC: 0.2703719922766281
Sensitivity: 0.8071519795657727
Specificity: 0.21614821591948766
Threshold: 0.31
Accuracy:  0.37201077803974403

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0009.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.6074506994336843
AUROC: 0.4996579018136559
AUPRC: 0.2999033539895697
Sensitivity: 0.2876480541455161
Specificity: 0.7018284106891702
Threshold: 0.33
Accuracy:  0.5802285146547441

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.95it/s]
Loss: 0.5862421088962144
AUROC: 0.5061306771642134
AUPRC: 0.26791041939797344
Sensitivity: 0.3269476372924649
Specificity: 0.6694876486733761
Threshold: 0.33
Accuracy:  0.5791512293701583

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0010.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.98it/s]
Loss: 0.6076197531074286
AUROC: 0.5018312664653345
AUPRC: 0.2904380969066579
Sensitivity: 0.6277495769881557
Specificity: 0.3818565400843882
Threshold: 0.32
Accuracy:  0.4540486835568803

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.95it/s]
Loss: 0.584706316071172
AUROC: 0.49897276760623444
AUPRC: 0.26183692201121134
Sensitivity: 0.6660280970625798
Specificity: 0.33462946020128087
Threshold: 0.32
Accuracy:  0.4220276187268441

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0011.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.97it/s]
Loss: 0.6053988076746464
AUROC: 0.50786230875224
AUPRC: 0.2905913808821383
Sensitivity: 0.8291032148900169
Specificity: 0.19971870604781997
Threshold: 0.31
Accuracy:  0.38450074515648286

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.96it/s]
Loss: 0.583080263868455
AUROC: 0.49948331656576916
AUPRC: 0.26122023487260526
Sensitivity: 0.18646232439335889
Specificity: 0.8117566331198536
Threshold: 0.32
Accuracy:  0.6468507915122937

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0012.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.98it/s]
Loss: 0.6116593163460493
AUROC: 0.5061393237998005
AUPRC: 0.2869142227087069
Sensitivity: 0.19627749576988154
Specificity: 0.760196905766526
Threshold: 0.35000000000000003
Accuracy:  0.5946348733233979

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.98it/s]
Loss: 0.5924579741493348
AUROC: 0.4943294084379991
AUPRC: 0.25839070926976515
Sensitivity: 0.2471264367816092
Specificity: 0.742451967063129
Threshold: 0.35000000000000003
Accuracy:  0.6118221623442236

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0013.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.94it/s]
Loss: 0.6139703579246998
AUROC: 0.5059572680693287
AUPRC: 0.28903633746983454
Sensitivity: 0.18274111675126903
Specificity: 0.7791842475386779
Threshold: 0.36
Accuracy:  0.604073522106309

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.96it/s]
Loss: 0.5961795391574982
AUROC: 0.49310864797346166
AUPRC: 0.2586870680179607
Sensitivity: 0.21711366538952745
Specificity: 0.757548032936871
Threshold: 0.36
Accuracy:  0.6150218928932301

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0014.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.97it/s]
Loss: 0.6085456870496273
AUROC: 0.5165736159599811
AUPRC: 0.2933042780411749
Sensitivity: 0.49915397631133673
Specificity: 0.5218002812939522
Threshold: 0.33
Accuracy:  0.5151515151515151

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.00it/s]
Loss: 0.5870072976235421
AUROC: 0.5004501535955617
AUPRC: 0.26285893198563304
Sensitivity: 0.4878671775223499
Specificity: 0.49428179322964316
Threshold: 0.33
Accuracy:  0.49259009767598516

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0015.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.94it/s]
Loss: 0.6120611950755119
AUROC: 0.49890112113012586
AUPRC: 0.28540975089724907
Sensitivity: 0.41624365482233505
Specificity: 0.5822784810126582
Threshold: 0.35000000000000003
Accuracy:  0.533532041728763

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.95it/s]
Loss: 0.5935999427431373
AUROC: 0.4910041580053726
AUPRC: 0.25714937994010667
Sensitivity: 0.438058748403576
Specificity: 0.5391125343092407
Threshold: 0.35000000000000003
Accuracy:  0.512462108454025

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0016.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.96it/s]
Loss: 0.6135357357561588
AUROC: 0.49107212976646886
AUPRC: 0.27949099784804954
Sensitivity: 0.4906937394247039
Specificity: 0.5210970464135021
Threshold: 0.35000000000000003
Accuracy:  0.5121708892200696

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.99it/s]
Loss: 0.5940064916046717
AUROC: 0.49448116365726863
AUPRC: 0.2603617888725159
Sensitivity: 0.5217113665389528
Specificity: 0.46431838975297346
Threshold: 0.35000000000000003
Accuracy:  0.4794543617379589

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0017.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.97it/s]
Loss: 0.6096223499625921
AUROC: 0.4923935211958087
AUPRC: 0.28132218413619803
Sensitivity: 0.2825719120135364
Specificity: 0.6933895921237694
Threshold: 0.34
Accuracy:  0.5727769498261301

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.98it/s]
Loss: 0.589149784657263
AUROC: 0.496440105910245
AUPRC: 0.26230802143698706
Sensitivity: 0.3173690932311622
Specificity: 0.6701738334858188
Threshold: 0.34
Accuracy:  0.5771303469181542

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0018.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.98it/s]
Loss: 0.6082488242536783
AUROC: 0.4925261957967735
AUPRC: 0.28358094005099055
Sensitivity: 0.2673434856175973
Specificity: 0.7053445850914205
Threshold: 0.34
Accuracy:  0.5767511177347243

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.97it/s]
Loss: 0.5888582416760024
AUROC: 0.49654906586556274
AUPRC: 0.26113482056534204
Sensitivity: 0.29246487867177523
Specificity: 0.6898444647758463
Threshold: 0.34
Accuracy:  0.5850454698551701

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0019.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.98it/s]
Loss: 0.6072896076366305
AUROC: 0.49441219797192293
AUPRC: 0.2855526690027088
Sensitivity: 0.39593908629441626
Specificity: 0.6040787623066104
Threshold: 0.33
Accuracy:  0.5429706905116741

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.95it/s]
Loss: 0.5864714976920876
AUROC: 0.5013080306700366
AUPRC: 0.26186182686072
Sensitivity: 0.42337164750957856
Specificity: 0.565416285452882
Threshold: 0.33
Accuracy:  0.5279555405860559

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0020.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.95it/s]
Loss: 0.6086727064102888
AUROC: 0.4899072110727961
AUPRC: 0.2788942955798981
Sensitivity: 0.4128595600676819
Specificity: 0.590014064697609
Threshold: 0.33
Accuracy:  0.5380029806259314

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.99it/s]
Loss: 0.586369453899322
AUROC: 0.5020587735257105
AUPRC: 0.2662287714327822
Sensitivity: 0.4278416347381865
Specificity: 0.5601555352241537
Threshold: 0.33
Accuracy:  0.5252610306500505

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0021.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.97it/s]
Loss: 0.6082743406295776
AUROC: 0.490640193621624
AUPRC: 0.279393120050184
Sensitivity: 0.36209813874788493
Specificity: 0.6526019690576652
Threshold: 0.34
Accuracy:  0.5673124689518132

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.96it/s]
Loss: 0.5888019633549516
AUROC: 0.5064091384977432
AUPRC: 0.2661599360575106
Sensitivity: 0.37547892720306514
Specificity: 0.6219121683440073
Threshold: 0.34
Accuracy:  0.5569215223981139

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0022.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.97it/s]
Loss: 0.6110725272446871
AUROC: 0.49727511357659787
AUPRC: 0.28536487917438036
Sensitivity: 0.5363790186125211
Specificity: 0.4549929676511955
Threshold: 0.34
Accuracy:  0.47888723298559366

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.99it/s]
Loss: 0.5907528999672141
AUROC: 0.514644670777349
AUPRC: 0.2707679238604471
Sensitivity: 0.5613026819923371
Specificity: 0.45128087831655994
Threshold: 0.34
Accuracy:  0.4802963960929606

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0023.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.98it/s]
Loss: 0.60872458294034
AUROC: 0.5011411205589706
AUPRC: 0.28928551955510245
Sensitivity: 0.5617597292724196
Specificity: 0.4360056258790436
Threshold: 0.32
Accuracy:  0.47292598112270245

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.97it/s]
Loss: 0.5848632634326976
AUROC: 0.5191395610520448
AUPRC: 0.2741546018293163
Sensitivity: 0.5842911877394636
Specificity: 0.44053064958828914
Threshold: 0.32
Accuracy:  0.4784439205119569

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0024.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.97it/s]
Loss: 0.6124667897820473
AUROC: 0.5112821007089464
AUPRC: 0.29724741117503184
Sensitivity: 0.43316412859560066
Specificity: 0.5794655414908579
Threshold: 0.35000000000000003
Accuracy:  0.5365126676602087

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.95it/s]
Loss: 0.5916242365555097
AUROC: 0.5259153804718053
AUPRC: 0.2783031084883221
Sensitivity: 0.4482758620689655
Specificity: 0.5958371454711803
Threshold: 0.35000000000000003
Accuracy:  0.5569215223981139

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0025.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.6074395999312401
AUROC: 0.5216223902370531
AUPRC: 0.30887682091015994
Sensitivity: 0.5397631133671743
Specificity: 0.47960618846694797
Threshold: 0.3
Accuracy:  0.4972677595628415

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.97it/s]
Loss: 0.5795800067404265
AUROC: 0.5350552365628714
AUPRC: 0.28408298134464954
Sensitivity: 0.5491698595146871
Specificity: 0.5016010978957
Threshold: 0.3
Accuracy:  0.5141461771640283

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0026.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.6052365358918905
AUROC: 0.5315170596928613
AUPRC: 0.3169767828634037
Sensitivity: 0.4720812182741117
Specificity: 0.5513361462728551
Threshold: 0.33
Accuracy:  0.5280675608544461

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.00it/s]
Loss: 0.5848036366765217
AUROC: 0.5379848864070558
AUPRC: 0.2846875665764156
Sensitivity: 0.4763729246487867
Specificity: 0.5770814272644099
Threshold: 0.33
Accuracy:  0.5505220613001011

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0027.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.98it/s]
Loss: 0.6028080992400646
AUROC: 0.5439474204011889
AUPRC: 0.32910326129520634
Sensitivity: 0.5786802030456852
Specificity: 0.47960618846694797
Threshold: 0.3
Accuracy:  0.5086934923000497

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.98it/s]
Loss: 0.5791779330340765
AUROC: 0.548506240805591
AUPRC: 0.2906304451454959
Sensitivity: 0.5683269476372924
Specificity: 0.505946935041171
Threshold: 0.3
Accuracy:  0.5223981138430448

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0028.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.97it/s]
Loss: 0.6034620758146048
AUROC: 0.5494787018593482
AUPRC: 0.3396830014244735
Sensitivity: 0.544839255499154
Specificity: 0.5239099859353024
Threshold: 0.31
Accuracy:  0.5300546448087432

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.00it/s]
Loss: 0.5802536023560391
AUROC: 0.5503627227252491
AUPRC: 0.2887443166192693
Sensitivity: 0.5242656449553001
Specificity: 0.5505489478499542
Threshold: 0.31
Accuracy:  0.5436173795890872

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0029.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.94it/s]
Loss: 0.6092495862394571
AUROC: 0.551518202003327
AUPRC: 0.33519318745024923
Sensitivity: 0.5245346869712352
Specificity: 0.5576652601969058
Threshold: 0.35000000000000003
Accuracy:  0.5479384003974168

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.99it/s]
Loss: 0.5910849507137012
AUROC: 0.5563230951871833
AUPRC: 0.2939520858679471
Sensitivity: 0.49936143039591313
Specificity: 0.5910338517840805
Threshold: 0.35000000000000003
Accuracy:  0.5668575277871337

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0030.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.606405958533287
AUROC: 0.5579996239894717
AUPRC: 0.3400815692872875
Sensitivity: 0.5516074450084603
Specificity: 0.5246132208157525
Threshold: 0.32
Accuracy:  0.5325384997516145

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.00it/s]
Loss: 0.5838605812800828
AUROC: 0.560458096279704
AUPRC: 0.29677800446632135
Sensitivity: 0.5523627075351213
Specificity: 0.5606129917657823
Threshold: 0.32
Accuracy:  0.5584371842371169

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0031.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.00it/s]
Loss: 0.6072099134325981
AUROC: 0.5602711559467969
AUPRC: 0.3420147505829509
Sensitivity: 0.5617597292724196
Specificity: 0.5316455696202531
Threshold: 0.33
Accuracy:  0.5404868355688028

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.99it/s]
Loss: 0.5869801233532608
AUROC: 0.5603925158240235
AUPRC: 0.29802029327904267
Sensitivity: 0.5376756066411239
Specificity: 0.5617566331198536
Threshold: 0.33
Accuracy:  0.5554058605591108

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0032.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.6055924464017153
AUROC: 0.5640027034681022
AUPRC: 0.3482924122032902
Sensitivity: 0.5194585448392555
Specificity: 0.5562587904360057
Threshold: 0.32
Accuracy:  0.5454545454545454

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.00it/s]
Loss: 0.5846613898713101
AUROC: 0.5623113649030929
AUPRC: 0.2996959352212517
Sensitivity: 0.5517241379310345
Specificity: 0.537740164684355
Threshold: 0.31
Accuracy:  0.5414280902660829

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0033.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.00it/s]
Loss: 0.6095598135143518
AUROC: 0.5629282176862977
AUPRC: 0.34534906750649513
Sensitivity: 0.55668358714044
Specificity: 0.5274261603375527
Threshold: 0.33
Accuracy:  0.5360158966716344

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.95it/s]
Loss: 0.5889879333716567
AUROC: 0.561148005594641
AUPRC: 0.29918353834094735
Sensitivity: 0.5325670498084292
Specificity: 0.5626715462031107
Threshold: 0.33
Accuracy:  0.5547322330751094

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0034.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.98it/s]
Loss: 0.6082155769690871
AUROC: 0.5639658163593138
AUPRC: 0.3481052473698812
Sensitivity: 0.5583756345177665
Specificity: 0.5428973277074542
Threshold: 0.32
Accuracy:  0.5474416294088426

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.00it/s]
Loss: 0.5872682797652419
AUROC: 0.5611997104527944
AUPRC: 0.3002977376063485
Sensitivity: 0.5210727969348659
Specificity: 0.5741079597438243
Threshold: 0.32
Accuracy:  0.5601212529471202

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0035.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.98it/s]
Loss: 0.6125499783083797
AUROC: 0.5594822477814189
AUPRC: 0.3436032209103156
Sensitivity: 0.544839255499154
Specificity: 0.5274261603375527
Threshold: 0.33
Accuracy:  0.5325384997516145

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.99it/s]
Loss: 0.5903429215954196
AUROC: 0.5566162354423073
AUPRC: 0.29832957490384104
Sensitivity: 0.5159642401021711
Specificity: 0.5583257090576396
Threshold: 0.33
Accuracy:  0.5471539238800943

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0036.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.6158356815576553
AUROC: 0.5580650688599028
AUPRC: 0.34509932488347095
Sensitivity: 0.5431472081218274
Specificity: 0.5351617440225035
Threshold: 0.33
Accuracy:  0.5375062096373572

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.00it/s]
Loss: 0.5953323491798934
AUROC: 0.560215638470284
AUPRC: 0.30060110498300296
Sensitivity: 0.5306513409961686
Specificity: 0.5580969807868252
Threshold: 0.33
Accuracy:  0.5508588750421017

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0037.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.00it/s]
Loss: 0.6171512696892023
AUROC: 0.5560803044257391
AUPRC: 0.3436561342213442
Sensitivity: 0.5363790186125211
Specificity: 0.5281293952180028
Threshold: 0.32
Accuracy:  0.5305514157973175

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.99it/s]
Loss: 0.5938796734297147
AUROC: 0.5551595898198101
AUPRC: 0.2988784135920722
Sensitivity: 0.545338441890166
Specificity: 0.5198993595608418
Threshold: 0.31
Accuracy:  0.5266082856180532

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0038.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.95it/s]
Loss: 0.6291347797960043
AUROC: 0.5559791623532547
AUPRC: 0.34033714734645465
Sensitivity: 0.5313028764805414
Specificity: 0.5457102672292545
Threshold: 0.37
Accuracy:  0.5414803775459514

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.99it/s]
Loss: 0.6103070153984972
AUROC: 0.55914159419223
AUPRC: 0.30095060779137006
Sensitivity: 0.5427841634738186
Specificity: 0.5416285452881976
Threshold: 0.36
Accuracy:  0.5419333108790839

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0039.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.6227582888677716
AUROC: 0.5564622644877095
AUPRC: 0.3428485727407886
Sensitivity: 0.5228426395939086
Specificity: 0.5520393811533052
Threshold: 0.33
Accuracy:  0.5434674615002484

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.98it/s]
Loss: 0.5976762329378436
AUROC: 0.5609841274849005
AUPRC: 0.3035490371725522
Sensitivity: 0.5344827586206896
Specificity: 0.5544373284537969
Threshold: 0.32
Accuracy:  0.5491748063320984

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0040.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.6335678491741419
AUROC: 0.5512540427081325
AUPRC: 0.3403403061521699
Sensitivity: 0.5245346869712352
Specificity: 0.5407876230661041
Threshold: 0.37
Accuracy:  0.5360158966716344

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.01it/s]
Loss: 0.6114827432940083
AUROC: 0.5594595644639813
AUPRC: 0.30348099346826135
Sensitivity: 0.5421455938697318
Specificity: 0.5418572735590119
Threshold: 0.36
Accuracy:  0.5419333108790839

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0041.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.98it/s]
Loss: 0.6203916743397713
AUROC: 0.5526771711633243
AUPRC: 0.34236350772651203
Sensitivity: 0.5363790186125211
Specificity: 0.5316455696202531
Threshold: 0.3
Accuracy:  0.5330352707401887

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.98it/s]
Loss: 0.5934630956060143
AUROC: 0.5569450871036984
AUPRC: 0.3022301766823764
Sensitivity: 0.5408684546615581
Specificity: 0.5320219579139982
Threshold: 0.29
Accuracy:  0.5343550016840687

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0042.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  5.00it/s]
Loss: 0.6223787106573582
AUROC: 0.551463466293512
AUPRC: 0.33948203066592164
Sensitivity: 0.5093062605752962
Specificity: 0.5386779184247539
Threshold: 0.31
Accuracy:  0.5300546448087432

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.98it/s]
Loss: 0.5970357291160091
AUROC: 0.5528912217419805
AUPRC: 0.2995341593759724
Sensitivity: 0.5210727969348659
Specificity: 0.5375114364135407
Threshold: 0.3
Accuracy:  0.5331761535870664

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0043.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.96it/s]
Loss: 0.6298506520688534
AUROC: 0.5496119714136806
AUPRC: 0.33790638956450325
Sensitivity: 0.5262267343485617
Specificity: 0.5365682137834037
Threshold: 0.33
Accuracy:  0.533532041728763

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.98it/s]
Loss: 0.6047234743513087
AUROC: 0.556018124159431
AUPRC: 0.3006219411202311
Sensitivity: 0.5434227330779055
Specificity: 0.5340805123513266
Threshold: 0.32
Accuracy:  0.5365442910070731

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0044.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.98it/s]
Loss: 0.6355092227458954
AUROC: 0.5483530500879341
AUPRC: 0.3358649867540746
Sensitivity: 0.5397631133671743
Specificity: 0.5232067510548524
Threshold: 0.32
Accuracy:  0.5280675608544461

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  5.01it/s]
Loss: 0.6086764524700821
AUROC: 0.5536633622296303
AUPRC: 0.299786794223615
Sensitivity: 0.5255427841634738
Specificity: 0.5512351326623971
Threshold: 0.32
Accuracy:  0.5444594139440889

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0045.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.98it/s]
Loss: 0.6340854661539197
AUROC: 0.546157672161656
AUPRC: 0.3350704150485493
Sensitivity: 0.5177664974619289
Specificity: 0.5372714486638537
Threshold: 0.3
Accuracy:  0.531544957774466

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.98it/s]
Loss: 0.6033331658891452
AUROC: 0.5511623222901104
AUPRC: 0.2982490411781573
Sensitivity: 0.5395913154533845
Specificity: 0.5137236962488564
Threshold: 0.29
Accuracy:  0.5205456382620411

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0046.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.96it/s]
Loss: 0.6449430678039789
AUROC: 0.5478306810312208
AUPRC: 0.3363499891638708
Sensitivity: 0.5177664974619289
Specificity: 0.5323488045007032
Threshold: 0.34
Accuracy:  0.5280675608544461

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.99it/s]
Loss: 0.617718558157644
AUROC: 0.5552187436829517
AUPRC: 0.3006962796678232
Sensitivity: 0.5370370370370371
Specificity: 0.5400274473924978
Threshold: 0.33
Accuracy:  0.5392388009430785

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0047.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.97it/s]
Loss: 0.640267277136445
AUROC: 0.5488861283052635
AUPRC: 0.33696942633427635
Sensitivity: 0.5313028764805414
Specificity: 0.5309423347398031
Threshold: 0.31
Accuracy:  0.5310481867858917

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.94it/s]
Loss: 0.610639407750099
AUROC: 0.5525815037992847
AUPRC: 0.3004672008773376
Sensitivity: 0.5363984674329502
Specificity: 0.5228728270814272
Threshold: 0.3
Accuracy:  0.5264398787470529

Intermediate Model:
  ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0048.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.99it/s]
Loss: 0.6394903808832169
AUROC: 0.5504472859417279
AUPRC: 0.33894206036750546
Sensitivity: 0.5313028764805414
Specificity: 0.5232067510548524
Threshold: 0.31
Accuracy:  0.5255837059115748

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.99it/s]
Loss: 0.6101284389213849
AUROC: 0.5547856059517258
AUPRC: 0.30227901252717626
Sensitivity: 0.5395913154533845
Specificity: 0.5324794144556267
Threshold: 0.3
Accuracy:  0.5343550016840687


Plot AUROC/AUPRC for Each Intermediate Model
  Epoch with best Validation Loss:      28, 0.602
  Epoch with best model Test AUROC:     32, 0.5623
  Epoch with best model Test Accuracy:   5, 0.6588

AUROC/AUPRC Plots - Best Model Based on Validation Loss
  Epoch with best Validation Loss:   28, 0.602
  Best Model Based on Validation Loss:
    ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0028.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.95it/s]
Loss: 0.5802536023560391
AUROC: 0.5503627227252491
AUPRC: 0.2887443166192693
Sensitivity: 0.5242656449553001
Specificity: 0.5505489478499542
Threshold: 0.31
Accuracy:  0.5436173795890872
<Figure size 640x480 with 0 Axes>
best_model_val_test_auroc: 0.5503627227252491
best_model_val_test_auprc: 0.2887443166192693

AUROC/AUPRC Plots - Best Model Based on Model AUROC
  Epoch with best model Test AUROC:  32, 0.5623
  Best Model Based on Model AUROC:
    ./vitaldb_cache/models/ECG_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_61eeadca_0032.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:18<00:00,  4.99it/s]
Loss: 0.5846613898713101
AUROC: 0.5623113649030929
AUPRC: 0.2996959352212517
Sensitivity: 0.5517241379310345
Specificity: 0.537740164684355
Threshold: 0.31
Accuracy:  0.5414280902660829
best_model_auroc_test_auroc: 0.5623113649030929
best_model_auroc_test_auprc: 0.2996959352212517

Total Processing Time: 3890.9850 sec

ABP and Batch Size Splits¶

In [107]:
RUN_ME = True

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=True, 
        useEeg=False, 
        useEcg=False,
        nResiduals=12, 
        skip_connection=False,
        batch_size=16,
        learning_rate=1e-4,
        weight_decay=0.0,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
Experiment Setup
  name:              ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771
  prediction_window: 003
  max_cases:         _ALL
  use_abp:           True
  use_eeg:           False
  use_ecg:           False
  n_residuals:       12
  skip_connection:   False
  batch_size:        16
  learning_rate:     0.0001
  weight_decay:      0.0
  balance_labels:    False
  max_epochs:        200
  patience:          20
  device:            mps

Model Architecture
HypotensionCNN(
  (abpResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
  )
  (abpFc): Linear(in_features=2814, out_features=32, bias=True)
  (fullLinear1): Linear(in_features=32, out_features=16, bias=True)
  (fullLinear2): Linear(in_features=16, out_features=1, bias=True)
  (sigmoid): Sigmoid()
)

Training Loop
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:03<00:00, 11.46it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.59it/s]
[2024-05-03 06:14:32.300023] Completed epoch 0 with training loss 0.46427870, validation loss 0.56479722
Validation loss improved to 0.56479722. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:03<00:00, 11.50it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.55it/s]
[2024-05-03 06:15:43.287527] Completed epoch 1 with training loss 0.44137320, validation loss 0.56577569
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:04<00:00, 11.37it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.55it/s]
[2024-05-03 06:16:54.960424] Completed epoch 2 with training loss 0.44208810, validation loss 0.54471248
Validation loss improved to 0.54471248. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:03<00:00, 11.47it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.36it/s]
[2024-05-03 06:18:06.172752] Completed epoch 3 with training loss 0.43071395, validation loss 0.60034031
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:03<00:00, 11.58it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.56it/s]
[2024-05-03 06:19:16.707031] Completed epoch 4 with training loss 0.43046755, validation loss 0.56501669
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:03<00:00, 11.47it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.52it/s]
[2024-05-03 06:20:27.857133] Completed epoch 5 with training loss 0.43012673, validation loss 0.52183998
Validation loss improved to 0.52183998. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:02<00:00, 11.67it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.57it/s]
[2024-05-03 06:21:37.930438] Completed epoch 6 with training loss 0.42647627, validation loss 0.49967971
Validation loss improved to 0.49967971. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:04<00:00, 11.44it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.55it/s]
[2024-05-03 06:22:49.277354] Completed epoch 7 with training loss 0.42027634, validation loss 0.58078897
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:03<00:00, 11.56it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.58it/s]
[2024-05-03 06:23:59.875331] Completed epoch 8 with training loss 0.42419195, validation loss 0.54313201
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:03<00:00, 11.52it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.58it/s]
[2024-05-03 06:25:10.702298] Completed epoch 9 with training loss 0.41805944, validation loss 0.49687782
Validation loss improved to 0.49687782. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:03<00:00, 11.51it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.61it/s]
[2024-05-03 06:26:21.619229] Completed epoch 10 with training loss 0.41601962, validation loss 0.47917163
Validation loss improved to 0.47917163. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:03<00:00, 11.57it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.45it/s]
[2024-05-03 06:27:32.284775] Completed epoch 11 with training loss 0.41419148, validation loss 0.50783771
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:03<00:00, 11.60it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.49it/s]
[2024-05-03 06:28:42.698760] Completed epoch 12 with training loss 0.41085613, validation loss 0.49830845
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:03<00:00, 11.57it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.55it/s]
[2024-05-03 06:29:53.245055] Completed epoch 13 with training loss 0.41175148, validation loss 0.55211008
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:03<00:00, 11.55it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.58it/s]
[2024-05-03 06:31:03.919247] Completed epoch 14 with training loss 0.40905124, validation loss 0.58748448
No improvement in validation loss. 4 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:03<00:00, 11.58it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.54it/s]
[2024-05-03 06:32:14.436035] Completed epoch 15 with training loss 0.40963259, validation loss 0.54028380
No improvement in validation loss. 5 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:04<00:00, 11.43it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.58it/s]
[2024-05-03 06:33:25.749903] Completed epoch 16 with training loss 0.40269184, validation loss 0.52737683
No improvement in validation loss. 6 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:03<00:00, 11.57it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.66it/s]
[2024-05-03 06:34:36.256895] Completed epoch 17 with training loss 0.39987233, validation loss 0.52424586
No improvement in validation loss. 7 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:03<00:00, 11.60it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.57it/s]
[2024-05-03 06:35:46.637686] Completed epoch 18 with training loss 0.40157214, validation loss 0.53745741
No improvement in validation loss. 8 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:02<00:00, 11.67it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.56it/s]
[2024-05-03 06:36:56.645673] Completed epoch 19 with training loss 0.39802438, validation loss 0.56306547
No improvement in validation loss. 9 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:02<00:00, 11.64it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.30it/s]
[2024-05-03 06:38:06.912455] Completed epoch 20 with training loss 0.39602986, validation loss 0.59753639
No improvement in validation loss. 10 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:03<00:00, 11.57it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.53it/s]
[2024-05-03 06:39:17.492149] Completed epoch 21 with training loss 0.39073965, validation loss 0.55139452
No improvement in validation loss. 11 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:03<00:00, 11.52it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.61it/s]
[2024-05-03 06:40:28.304582] Completed epoch 22 with training loss 0.38999051, validation loss 0.58480716
No improvement in validation loss. 12 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:03<00:00, 11.60it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.50it/s]
[2024-05-03 06:41:38.732232] Completed epoch 23 with training loss 0.38815603, validation loss 0.53862661
No improvement in validation loss. 13 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:03<00:00, 11.58it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.54it/s]
[2024-05-03 06:42:49.249890] Completed epoch 24 with training loss 0.38575214, validation loss 0.50243193
No improvement in validation loss. 14 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:03<00:00, 11.56it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.51it/s]
[2024-05-03 06:43:59.867794] Completed epoch 25 with training loss 0.38557208, validation loss 0.54632640
No improvement in validation loss. 15 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:03<00:00, 11.54it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.57it/s]
[2024-05-03 06:45:10.622002] Completed epoch 26 with training loss 0.38016069, validation loss 0.63108587
No improvement in validation loss. 16 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:03<00:00, 11.54it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.61it/s]
[2024-05-03 06:46:21.312400] Completed epoch 27 with training loss 0.37705559, validation loss 0.64757395
No improvement in validation loss. 17 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:03<00:00, 11.63it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.56it/s]
[2024-05-03 06:47:31.560538] Completed epoch 28 with training loss 0.37635654, validation loss 0.52225804
No improvement in validation loss. 18 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:02<00:00, 11.69it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.50it/s]
[2024-05-03 06:48:41.495197] Completed epoch 29 with training loss 0.37464169, validation loss 0.55431569
No improvement in validation loss. 19 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 733/733 [01:03<00:00, 11.62it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.59it/s]
[2024-05-03 06:49:51.797746] Completed epoch 30 with training loss 0.37373674, validation loss 0.57820690
No improvement in validation loss. 20 epochs without improvement.
Early stopping due to no improvement in validation loss.

Plot Validation and Loss Values from Training
  Epoch with best Validation Loss:   10, 0.4792
Generate AUROC/AUPRC for Each Intermediate Model

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0000.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:06<00:00, 19.39it/s]
Loss: 0.5646312512930424
AUROC: 0.8432571555041516
AUPRC: 0.6996708839693659
Sensitivity: 0.7648054145516074
Specificity: 0.7672292545710268
Threshold: 0.14
Accuracy:  0.7665176353700944

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:22<00:00, 16.37it/s]
Loss: 0.5299453399975294
AUROC: 0.8350500368652718
AUPRC: 0.6832027543536515
Sensitivity: 0.7452107279693486
Specificity: 0.779277218664227
Threshold: 0.14
Accuracy:  0.7702930279555406

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0001.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.48it/s]
Loss: 0.5659402249351381
AUROC: 0.8433571076699009
AUPRC: 0.7035607758534287
Sensitivity: 0.7648054145516074
Specificity: 0.7637130801687764
Threshold: 0.13
Accuracy:  0.764033780427223

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:20<00:00, 17.90it/s]
Loss: 0.5315537500766015
AUROC: 0.8360459396204104
AUPRC: 0.6845934498908258
Sensitivity: 0.7496807151979565
Specificity: 0.7703568161024703
Threshold: 0.13
Accuracy:  0.7649040080835298

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0002.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.61it/s]
Loss: 0.544771201672062
AUROC: 0.8453418721040643
AUPRC: 0.7005363151880611
Sensitivity: 0.7580372250423012
Specificity: 0.7637130801687764
Threshold: 0.14
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:20<00:00, 17.93it/s]
Loss: 0.5160410239721739
AUROC: 0.8362572868795854
AUPRC: 0.6813119798494557
Sensitivity: 0.7694763729246488
Specificity: 0.7527447392497713
Threshold: 0.13
Accuracy:  0.7571572920175144

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0003.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.45it/s]
Loss: 0.6008606312412118
AUROC: 0.843856868498647
AUPRC: 0.6957400880300857
Sensitivity: 0.766497461928934
Specificity: 0.7559774964838256
Threshold: 0.1
Accuracy:  0.7590660705414803

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:20<00:00, 17.74it/s]
Loss: 0.5672456599091009
AUROC: 0.8353255770203747
AUPRC: 0.6787731925998337
Sensitivity: 0.7503192848020435
Specificity: 0.7708142726440989
Threshold: 0.1
Accuracy:  0.7654092286965308

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0004.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.54it/s]
Loss: 0.5655016441430364
AUROC: 0.8406560193812009
AUPRC: 0.6878988689336261
Sensitivity: 0.7580372250423012
Specificity: 0.7616033755274262
Threshold: 0.13
Accuracy:  0.7605563835072032

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:21<00:00, 17.69it/s]
Loss: 0.5378331977633699
AUROC: 0.8320855519683484
AUPRC: 0.6721539585500341
Sensitivity: 0.7650063856960408
Specificity: 0.7538883806038427
Threshold: 0.12
Accuracy:  0.7568204782755137

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0005.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.54it/s]
Loss: 0.5218310578474923
AUROC: 0.8429656283540495
AUPRC: 0.6819745543764109
Sensitivity: 0.7698815566835872
Specificity: 0.7623066104078763
Threshold: 0.16
Accuracy:  0.7645305514157973

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:20<00:00, 17.77it/s]
Loss: 0.4993946534000658
AUROC: 0.8327071787375601
AUPRC: 0.6672492694692951
Sensitivity: 0.7675606641123882
Specificity: 0.7548032936870998
Threshold: 0.15
Accuracy:  0.7581677332435164

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0006.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.44it/s]
Loss: 0.5000647974629251
AUROC: 0.839057974635948
AUPRC: 0.6749604678667589
Sensitivity: 0.766497461928934
Specificity: 0.7623066104078763
Threshold: 0.2
Accuracy:  0.7635370094386488

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:20<00:00, 17.80it/s]
Loss: 0.47910965144914647
AUROC: 0.8295370428793939
AUPRC: 0.6603395289172501
Sensitivity: 0.7675606641123882
Specificity: 0.7518298261665142
Threshold: 0.19
Accuracy:  0.7559784439205119

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0007.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.44it/s]
Loss: 0.582275730513391
AUROC: 0.8390889122110609
AUPRC: 0.6701346626208169
Sensitivity: 0.766497461928934
Specificity: 0.770745428973277
Threshold: 0.12
Accuracy:  0.76949826130154

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:20<00:00, 17.72it/s]
Loss: 0.5498181640155493
AUROC: 0.8308283498029373
AUPRC: 0.6566596229371556
Sensitivity: 0.7618135376756067
Specificity: 0.7564043915827996
Threshold: 0.11
Accuracy:  0.7578309195015157

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0008.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.52it/s]
Loss: 0.5430742655954663
AUROC: 0.8358238081299187
AUPRC: 0.6612878019315273
Sensitivity: 0.7749576988155669
Specificity: 0.7573839662447257
Threshold: 0.15
Accuracy:  0.7625434674615003

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:21<00:00, 17.65it/s]
Loss: 0.5151498105967798
AUROC: 0.827534575067859
AUPRC: 0.6480959863641185
Sensitivity: 0.7650063856960408
Specificity: 0.7415370539798719
Threshold: 0.14
Accuracy:  0.7477265072414955

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0009.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.40it/s]
Loss: 0.496976894045633
AUROC: 0.8356774496015003
AUPRC: 0.6541513980651265
Sensitivity: 0.7681895093062606
Specificity: 0.7644163150492265
Threshold: 0.2
Accuracy:  0.7655240933929458

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:21<00:00, 17.69it/s]
Loss: 0.4763178059891347
AUROC: 0.8262962875327611
AUPRC: 0.6417454391094475
Sensitivity: 0.7618135376756067
Specificity: 0.7413083257090577
Threshold: 0.18
Accuracy:  0.7467160660154935

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0010.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.39it/s]
Loss: 0.4797885168402914
AUROC: 0.8319316231993736
AUPRC: 0.6579487176374711
Sensitivity: 0.7495769881556683
Specificity: 0.7672292545710268
Threshold: 0.23
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:21<00:00, 17.19it/s]
Loss: 0.4606594289302505
AUROC: 0.8248021777969408
AUPRC: 0.6469733860659582
Sensitivity: 0.7490421455938697
Specificity: 0.7605215004574566
Threshold: 0.22
Accuracy:  0.757494105759515

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0011.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 16.42it/s]
Loss: 0.5081103464204167
AUROC: 0.8316662739974441
AUPRC: 0.6542513893508938
Sensitivity: 0.7445008460236887
Specificity: 0.7651195499296765
Threshold: 0.18
Accuracy:  0.7590660705414803

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:20<00:00, 17.73it/s]
Loss: 0.48352636504537794
AUROC: 0.8259145625418458
AUPRC: 0.6441377049643514
Sensitivity: 0.7426564495530013
Specificity: 0.7612076852698993
Threshold: 0.17
Accuracy:  0.7563152576625126

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0012.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.67it/s]
Loss: 0.49815774827249465
AUROC: 0.8227193652561512
AUPRC: 0.6419404911049312
Sensitivity: 0.7580372250423012
Specificity: 0.7369901547116737
Threshold: 0.21
Accuracy:  0.7431693989071039

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:20<00:00, 17.75it/s]
Loss: 0.47386968642553334
AUROC: 0.8181288187104984
AUPRC: 0.6311479051383327
Sensitivity: 0.7407407407407407
Specificity: 0.7598353156450137
Threshold: 0.21
Accuracy:  0.7547995958235096

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0013.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.47it/s]
Loss: 0.5521334520881138
AUROC: 0.8252491069749953
AUPRC: 0.6411144325543872
Sensitivity: 0.7428087986463621
Specificity: 0.7573839662447257
Threshold: 0.14
Accuracy:  0.7531048186785891

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:20<00:00, 17.79it/s]
Loss: 0.5217603805865492
AUROC: 0.8197862223203739
AUPRC: 0.6344268784968776
Sensitivity: 0.7471264367816092
Specificity: 0.7479414455626715
Threshold: 0.13
Accuracy:  0.7477265072414955

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0014.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.59it/s]
Loss: 0.5879785529973488
AUROC: 0.8264532925909267
AUPRC: 0.6414930163034218
Sensitivity: 0.7377326565143824
Specificity: 0.7637130801687764
Threshold: 0.11
Accuracy:  0.7560854446100348

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:20<00:00, 17.77it/s]
Loss: 0.5543632323938792
AUROC: 0.8210329812729095
AUPRC: 0.6344647629623528
Sensitivity: 0.7464878671775224
Specificity: 0.7541171088746569
Threshold: 0.1
Accuracy:  0.7521050858875042

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0015.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.48it/s]
Loss: 0.5405129209633858
AUROC: 0.8240895428616304
AUPRC: 0.6381106078998308
Sensitivity: 0.7495769881556683
Specificity: 0.7468354430379747
Threshold: 0.14
Accuracy:  0.7476403378042722

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:20<00:00, 17.73it/s]
Loss: 0.5088965280972901
AUROC: 0.8200162651214801
AUPRC: 0.6330508289223956
Sensitivity: 0.7528735632183908
Specificity: 0.7383348581884721
Threshold: 0.13
Accuracy:  0.7421690804984843

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0016.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.46it/s]
Loss: 0.5268748092745977
AUROC: 0.8276884157819709
AUPRC: 0.6487002659201693
Sensitivity: 0.7563451776649747
Specificity: 0.7447257383966245
Threshold: 0.14
Accuracy:  0.7481371087928465

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:20<00:00, 17.71it/s]
Loss: 0.49903973294622317
AUROC: 0.8232802438366057
AUPRC: 0.6451177650058867
Sensitivity: 0.7401021711366539
Specificity: 0.7616651418115279
Threshold: 0.14
Accuracy:  0.7559784439205119

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0017.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.56it/s]
Loss: 0.5242592451118288
AUROC: 0.8065187850576272
AUPRC: 0.6118930076596524
Sensitivity: 0.7292724196277496
Specificity: 0.7412095639943741
Threshold: 0.18
Accuracy:  0.7377049180327869

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:20<00:00, 17.81it/s]
Loss: 0.48998937834935485
AUROC: 0.8066084943194766
AUPRC: 0.6102349714672867
Sensitivity: 0.743933588761175
Specificity: 0.7301006404391582
Threshold: 0.17
Accuracy:  0.7337487369484675

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0018.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.55it/s]
Loss: 0.5365407565638186
AUROC: 0.8173409868134536
AUPRC: 0.6283924462186842
Sensitivity: 0.7495769881556683
Specificity: 0.750351617440225
Threshold: 0.15
Accuracy:  0.7501241927471436

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:20<00:00, 17.81it/s]
Loss: 0.5021964346549364
AUROC: 0.8155036286878417
AUPRC: 0.632007503114057
Sensitivity: 0.7522349936143039
Specificity: 0.7408508691674291
Threshold: 0.14
Accuracy:  0.7438531492084877

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0019.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.54it/s]
Loss: 0.5638389134454349
AUROC: 0.8132964938208143
AUPRC: 0.6183100805144278
Sensitivity: 0.7377326565143824
Specificity: 0.750351617440225
Threshold: 0.13
Accuracy:  0.7466467958271237

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:20<00:00, 17.76it/s]
Loss: 0.5255385929698585
AUROC: 0.8112327197690166
AUPRC: 0.6233581389120383
Sensitivity: 0.7394636015325671
Specificity: 0.7406221408966148
Threshold: 0.12
Accuracy:  0.7403166049174806

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0020.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.43it/s]
Loss: 0.5979138128459454
AUROC: 0.8143995373642614
AUPRC: 0.6298329226730506
Sensitivity: 0.7360406091370558
Specificity: 0.7433192686357243
Threshold: 0.1
Accuracy:  0.7411823149528067

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:21<00:00, 17.69it/s]
Loss: 0.555531912686063
AUROC: 0.813310700042883
AUPRC: 0.6336355761549006
Sensitivity: 0.7528735632183908
Specificity: 0.7303293687099726
Threshold: 0.09
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0021.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.38it/s]
Loss: 0.5519765944234909
AUROC: 0.8010202260346835
AUPRC: 0.605080638049942
Sensitivity: 0.727580372250423
Specificity: 0.7482419127988749
Threshold: 0.15
Accuracy:  0.7421758569299552

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:21<00:00, 17.29it/s]
Loss: 0.5143294825208604
AUROC: 0.7992330299981655
AUPRC: 0.6038699317943269
Sensitivity: 0.7260536398467433
Specificity: 0.7323879231473011
Threshold: 0.14
Accuracy:  0.7307174132704615

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0022.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.43it/s]
Loss: 0.5839253870977296
AUROC: 0.8007679658068401
AUPRC: 0.6084093610445456
Sensitivity: 0.7326565143824028
Specificity: 0.7355836849507735
Threshold: 0.12
Accuracy:  0.7347242921013413

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:20<00:00, 17.83it/s]
Loss: 0.5410315105741623
AUROC: 0.8006380437919699
AUPRC: 0.6085859522315844
Sensitivity: 0.7381864623243933
Specificity: 0.7236962488563586
Threshold: 0.11
Accuracy:  0.727517682721455

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0023.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.57it/s]
Loss: 0.5386889436770053
AUROC: 0.8051837097008337
AUPRC: 0.6121716992421912
Sensitivity: 0.7445008460236887
Specificity: 0.7320675105485233
Threshold: 0.15
Accuracy:  0.7357178340784898

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:20<00:00, 17.78it/s]
Loss: 0.5014367549159434
AUROC: 0.8047969255181294
AUPRC: 0.6136202906083548
Sensitivity: 0.7292464878671775
Specificity: 0.7422232387923148
Threshold: 0.15
Accuracy:  0.7388009430784777

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0024.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.43it/s]
Loss: 0.5028507750895288
AUROC: 0.7996851506778898
AUPRC: 0.598704321931369
Sensitivity: 0.7377326565143824
Specificity: 0.7313642756680732
Threshold: 0.21
Accuracy:  0.7332339791356185

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:21<00:00, 17.69it/s]
Loss: 0.47270373430764
AUROC: 0.7981630753699088
AUPRC: 0.6002087259072724
Sensitivity: 0.7337164750957854
Specificity: 0.7232387923147301
Threshold: 0.2
Accuracy:  0.726002020882452

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0025.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.37it/s]
Loss: 0.5459936731864535
AUROC: 0.7891235384970526
AUPRC: 0.5905339293219037
Sensitivity: 0.7241962774957699
Specificity: 0.729957805907173
Threshold: 0.16
Accuracy:  0.7282662692498758

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:21<00:00, 17.56it/s]
Loss: 0.5046808610129501
AUROC: 0.7917093158716971
AUPRC: 0.5929085790321638
Sensitivity: 0.7145593869731801
Specificity: 0.7339890210430009
Threshold: 0.16
Accuracy:  0.7288649376894577

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0026.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.53it/s]
Loss: 0.6308538745793085
AUROC: 0.808651692880312
AUPRC: 0.6144149202634928
Sensitivity: 0.7495769881556683
Specificity: 0.7355836849507735
Threshold: 0.08
Accuracy:  0.739692001987084

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:20<00:00, 17.83it/s]
Loss: 0.5868817436626501
AUROC: 0.8064428635026799
AUPRC: 0.6192978839006972
Sensitivity: 0.7241379310344828
Specificity: 0.7488563586459286
Threshold: 0.08
Accuracy:  0.7423374873694847

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0027.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.52it/s]
Loss: 0.6476328749032247
AUROC: 0.8034274073598111
AUPRC: 0.6085295679544824
Sensitivity: 0.7326565143824028
Specificity: 0.7531645569620253
Threshold: 0.08
Accuracy:  0.7471435668156979

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:20<00:00, 17.82it/s]
Loss: 0.5956504615023732
AUROC: 0.8044330927450781
AUPRC: 0.6181139372750332
Sensitivity: 0.7375478927203065
Specificity: 0.7289569990850869
Threshold: 0.07
Accuracy:  0.7312226338834624

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0028.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.62it/s]
Loss: 0.5225583183623496
AUROC: 0.7901980242788571
AUPRC: 0.5860964525034517
Sensitivity: 0.739424703891709
Specificity: 0.7236286919831224
Threshold: 0.19
Accuracy:  0.7282662692498758

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:20<00:00, 17.80it/s]
Loss: 0.4840267402951115
AUROC: 0.7935732467963436
AUPRC: 0.5948964521531073
Sensitivity: 0.7222222222222222
Specificity: 0.7351326623970723
Threshold: 0.19
Accuracy:  0.7317278544964635

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0029.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.31it/s]
Loss: 0.5535199324053431
AUROC: 0.7935547511786027
AUPRC: 0.5874136197788021
Sensitivity: 0.7241962774957699
Specificity: 0.7419127988748242
Threshold: 0.15
Accuracy:  0.7367113760556383

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:20<00:00, 17.82it/s]
Loss: 0.5124261767142803
AUROC: 0.7955224761310511
AUPRC: 0.5956484407597797
Sensitivity: 0.735632183908046
Specificity: 0.7177493138151876
Threshold: 0.13
Accuracy:  0.7224654765914449

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0030.model
AUROC/AUPRC on Validation Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 126/126 [00:07<00:00, 17.53it/s]
Loss: 0.5779908263967151
AUROC: 0.7786261812799111
AUPRC: 0.5691662022889968
Sensitivity: 0.7225042301184433
Specificity: 0.7123769338959213
Threshold: 0.13
Accuracy:  0.7153502235469449

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:20<00:00, 17.81it/s]
Loss: 0.5275369864232557
AUROC: 0.7855403712700934
AUPRC: 0.5840876906474293
Sensitivity: 0.7196679438058748
Specificity: 0.7234675205855444
Threshold: 0.13
Accuracy:  0.7224654765914449


Plot AUROC/AUPRC for Each Intermediate Model
  Epoch with best Validation Loss:      10, 0.4792
  Epoch with best model Test AUROC:      2, 0.8363
  Epoch with best model Test Accuracy:   0, 0.7703

AUROC/AUPRC Plots - Best Model Based on Validation Loss
  Epoch with best Validation Loss:   10, 0.4792
  Best Model Based on Validation Loss:
    ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0010.model

Generate Stats Based on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:20<00:00, 17.81it/s]
Loss: 0.4606594289302505
AUROC: 0.8248021777969408
AUPRC: 0.6469733860659582
Sensitivity: 0.7490421455938697
Specificity: 0.7605215004574566
Threshold: 0.22
Accuracy:  0.757494105759515
<Figure size 640x480 with 0 Axes>
best_model_val_test_auroc: 0.8248021777969408
best_model_val_test_auprc: 0.6469733860659582

AUROC/AUPRC Plots - Best Model Based on Model AUROC
  Epoch with best model Test AUROC:   2, 0.8363
  Best Model Based on Model AUROC:
    ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_16_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_ac569771_0002.model

Generate Stats Based on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 372/372 [00:20<00:00, 17.76it/s]
Loss: 0.5160410239721739
AUROC: 0.8362572868795854
AUPRC: 0.6813119798494557
Sensitivity: 0.7694763729246488
Specificity: 0.7527447392497713
Threshold: 0.13
Accuracy:  0.7571572920175144
best_model_auroc_test_auroc: 0.8362572868795854
best_model_auroc_test_auprc: 0.6813119798494557

Total Processing Time: 3139.4180 sec
In [108]:
RUN_ME = True

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=True, 
        useEeg=False, 
        useEcg=False,
        nResiduals=12, 
        skip_connection=False,
        batch_size=32,
        learning_rate=1e-4,
        weight_decay=0.0,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
Experiment Setup
  name:              ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04
  prediction_window: 003
  max_cases:         _ALL
  use_abp:           True
  use_eeg:           False
  use_ecg:           False
  n_residuals:       12
  skip_connection:   False
  batch_size:        32
  learning_rate:     0.0001
  weight_decay:      0.0
  balance_labels:    False
  max_epochs:        200
  patience:          20
  device:            mps

Model Architecture
HypotensionCNN(
  (abpResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
  )
  (abpFc): Linear(in_features=2814, out_features=32, bias=True)
  (fullLinear1): Linear(in_features=32, out_features=16, bias=True)
  (fullLinear2): Linear(in_features=16, out_features=1, bias=True)
  (sigmoid): Sigmoid()
)

Training Loop
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:51<00:00,  7.11it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.26it/s]
[2024-05-03 07:06:39.077809] Completed epoch 0 with training loss 0.46130836, validation loss 0.55918688
Validation loss improved to 0.55918688. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:50<00:00,  7.31it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.29it/s]
[2024-05-03 07:07:36.147134] Completed epoch 1 with training loss 0.43747085, validation loss 0.62058824
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:50<00:00,  7.28it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.27it/s]
[2024-05-03 07:08:33.367380] Completed epoch 2 with training loss 0.43494654, validation loss 0.51534641
Validation loss improved to 0.51534641. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:50<00:00,  7.34it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.27it/s]
[2024-05-03 07:09:30.256936] Completed epoch 3 with training loss 0.43261442, validation loss 0.62596589
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:50<00:00,  7.30it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.30it/s]
[2024-05-03 07:10:27.327804] Completed epoch 4 with training loss 0.42908522, validation loss 0.63625634
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:50<00:00,  7.30it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.29it/s]
[2024-05-03 07:11:24.402343] Completed epoch 5 with training loss 0.42685848, validation loss 0.51814348
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:50<00:00,  7.32it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.30it/s]
[2024-05-03 07:12:21.377080] Completed epoch 6 with training loss 0.42606184, validation loss 0.49967262
Validation loss improved to 0.49967262. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:49<00:00,  7.34it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.31it/s]
[2024-05-03 07:13:18.179963] Completed epoch 7 with training loss 0.42171949, validation loss 0.59224832
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:50<00:00,  7.33it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.33it/s]
[2024-05-03 07:14:15.038087] Completed epoch 8 with training loss 0.42115965, validation loss 0.54418433
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:50<00:00,  7.34it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.29it/s]
[2024-05-03 07:15:11.864911] Completed epoch 9 with training loss 0.41897193, validation loss 0.50482661
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:50<00:00,  7.30it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.30it/s]
[2024-05-03 07:16:08.973043] Completed epoch 10 with training loss 0.41716811, validation loss 0.49452832
Validation loss improved to 0.49452832. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:50<00:00,  7.32it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.30it/s]
[2024-05-03 07:17:05.946563] Completed epoch 11 with training loss 0.41337156, validation loss 0.48242214
Validation loss improved to 0.48242214. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:50<00:00,  7.32it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.20it/s]
[2024-05-03 07:18:03.028478] Completed epoch 12 with training loss 0.40862468, validation loss 0.52564859
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:50<00:00,  7.30it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.29it/s]
[2024-05-03 07:19:00.102849] Completed epoch 13 with training loss 0.41159856, validation loss 0.55376577
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:50<00:00,  7.33it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.29it/s]
[2024-05-03 07:19:56.962018] Completed epoch 14 with training loss 0.40837920, validation loss 0.60347092
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:50<00:00,  7.31it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.28it/s]
[2024-05-03 07:20:54.001255] Completed epoch 15 with training loss 0.40981382, validation loss 0.48894778
No improvement in validation loss. 4 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:50<00:00,  7.30it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.29it/s]
[2024-05-03 07:21:51.084752] Completed epoch 16 with training loss 0.40535071, validation loss 0.52776873
No improvement in validation loss. 5 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:50<00:00,  7.33it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.30it/s]
[2024-05-03 07:22:47.977275] Completed epoch 17 with training loss 0.40474966, validation loss 0.52278322
No improvement in validation loss. 6 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:50<00:00,  7.32it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.26it/s]
[2024-05-03 07:23:44.961769] Completed epoch 18 with training loss 0.40341684, validation loss 0.47492322
Validation loss improved to 0.47492322. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:50<00:00,  7.30it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.30it/s]
[2024-05-03 07:24:42.087989] Completed epoch 19 with training loss 0.39929208, validation loss 0.53396559
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:50<00:00,  7.22it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.23it/s]
[2024-05-03 07:25:39.763580] Completed epoch 20 with training loss 0.39898762, validation loss 0.62939864
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:50<00:00,  7.32it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.27it/s]
[2024-05-03 07:26:36.717944] Completed epoch 21 with training loss 0.39826757, validation loss 0.52058125
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:50<00:00,  7.26it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.14it/s]
[2024-05-03 07:27:34.224696] Completed epoch 22 with training loss 0.39630842, validation loss 0.52194691
No improvement in validation loss. 4 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:51<00:00,  7.14it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.14it/s]
[2024-05-03 07:28:32.559951] Completed epoch 23 with training loss 0.39596358, validation loss 0.54950488
No improvement in validation loss. 5 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:51<00:00,  7.11it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.12it/s]
[2024-05-03 07:29:31.118848] Completed epoch 24 with training loss 0.39166236, validation loss 0.48991084
No improvement in validation loss. 6 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:52<00:00,  7.03it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.88it/s]
[2024-05-03 07:30:30.443795] Completed epoch 25 with training loss 0.39062333, validation loss 0.51154262
No improvement in validation loss. 7 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:52<00:00,  6.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.08it/s]
[2024-05-03 07:31:30.184040] Completed epoch 26 with training loss 0.38996968, validation loss 0.57780081
No improvement in validation loss. 8 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:51<00:00,  7.08it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.04it/s]
[2024-05-03 07:32:29.051050] Completed epoch 27 with training loss 0.38614789, validation loss 0.61693615
No improvement in validation loss. 9 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:51<00:00,  7.09it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.08it/s]
[2024-05-03 07:33:27.781852] Completed epoch 28 with training loss 0.38632676, validation loss 0.54508722
No improvement in validation loss. 10 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:51<00:00,  7.08it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.06it/s]
[2024-05-03 07:34:26.634295] Completed epoch 29 with training loss 0.38825968, validation loss 0.49171034
No improvement in validation loss. 11 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:51<00:00,  7.08it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.03it/s]
[2024-05-03 07:35:25.517563] Completed epoch 30 with training loss 0.38285175, validation loss 0.52178621
No improvement in validation loss. 12 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:51<00:00,  7.07it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.00it/s]
[2024-05-03 07:36:24.432539] Completed epoch 31 with training loss 0.38279620, validation loss 0.49949405
No improvement in validation loss. 13 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:51<00:00,  7.07it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.98it/s]
[2024-05-03 07:37:23.362688] Completed epoch 32 with training loss 0.38229254, validation loss 0.58125818
No improvement in validation loss. 14 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:51<00:00,  7.07it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.96it/s]
[2024-05-03 07:38:22.373294] Completed epoch 33 with training loss 0.37640131, validation loss 0.52937979
No improvement in validation loss. 15 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:51<00:00,  7.10it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.04it/s]
[2024-05-03 07:39:21.075128] Completed epoch 34 with training loss 0.37844947, validation loss 0.56300360
No improvement in validation loss. 16 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:52<00:00,  7.06it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.01it/s]
[2024-05-03 07:40:20.125103] Completed epoch 35 with training loss 0.37538555, validation loss 0.57663137
No improvement in validation loss. 17 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:51<00:00,  7.08it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.01it/s]
[2024-05-03 07:41:19.028142] Completed epoch 36 with training loss 0.37073123, validation loss 0.58735400
No improvement in validation loss. 18 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:51<00:00,  7.07it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00,  9.01it/s]
[2024-05-03 07:42:17.949657] Completed epoch 37 with training loss 0.37422794, validation loss 0.59191686
No improvement in validation loss. 19 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 367/367 [00:51<00:00,  7.07it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.99it/s]
[2024-05-03 07:43:16.897838] Completed epoch 38 with training loss 0.36979339, validation loss 0.54804021
No improvement in validation loss. 20 epochs without improvement.
Early stopping due to no improvement in validation loss.

Plot Validation and Loss Values from Training
  Epoch with best Validation Loss:   18, 0.4749
Generate AUROC/AUPRC for Each Intermediate Model

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0000.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:06<00:00, 10.26it/s]
Loss: 0.558814957974449
AUROC: 0.844115078260166
AUPRC: 0.6969175202188468
Sensitivity: 0.7461928934010152
Specificity: 0.7770745428973277
Threshold: 0.15
Accuracy:  0.7680079483358172

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:21<00:00,  8.79it/s]
Loss: 0.5267640031393497
AUROC: 0.833956712809601
AUPRC: 0.6793330675858575
Sensitivity: 0.7662835249042146
Specificity: 0.7552607502287283
Threshold: 0.14
Accuracy:  0.7581677332435164

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0001.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.83it/s]
Loss: 0.6209795706801944
AUROC: 0.8445493942184812
AUPRC: 0.7025352378264782
Sensitivity: 0.7817258883248731
Specificity: 0.7454289732770746
Threshold: 0.09
Accuracy:  0.7560854446100348

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  9.01it/s]
Loss: 0.5808462722287062
AUROC: 0.8365475059562828
AUPRC: 0.6855612478404828
Sensitivity: 0.7637292464878672
Specificity: 0.7552607502287283
Threshold: 0.09
Accuracy:  0.757494105759515

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0002.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.90it/s]
Loss: 0.515695918174017
AUROC: 0.8446207886225879
AUPRC: 0.6990828959761152
Sensitivity: 0.7715736040609137
Specificity: 0.7686357243319268
Threshold: 0.17
Accuracy:  0.76949826130154

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  9.01it/s]
Loss: 0.4900984772110498
AUROC: 0.8350969948084818
AUPRC: 0.6809192782672582
Sensitivity: 0.764367816091954
Specificity: 0.7541171088746569
Threshold: 0.16
Accuracy:  0.7568204782755137

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0003.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.89it/s]
Loss: 0.6264193583102453
AUROC: 0.8450979412233668
AUPRC: 0.702789828264122
Sensitivity: 0.7783417935702199
Specificity: 0.7482419127988749
Threshold: 0.08
Accuracy:  0.7570789865871833

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  9.00it/s]
Loss: 0.5879656359833735
AUROC: 0.8372709357936666
AUPRC: 0.6862217604280579
Sensitivity: 0.7650063856960408
Specificity: 0.7548032936870998
Threshold: 0.08
Accuracy:  0.757494105759515

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0004.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.90it/s]
Loss: 0.6371028851422053
AUROC: 0.8431762418461641
AUPRC: 0.7012128512578311
Sensitivity: 0.7580372250423012
Specificity: 0.770042194092827
Threshold: 0.08
Accuracy:  0.7665176353700944

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  8.97it/s]
Loss: 0.5998029819319165
AUROC: 0.8358794324500858
AUPRC: 0.6842436163032956
Sensitivity: 0.7420178799489144
Specificity: 0.7785910338517841
Threshold: 0.08
Accuracy:  0.7689457729875379

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0005.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.87it/s]
Loss: 0.5179893951567393
AUROC: 0.8430191741571296
AUPRC: 0.6924677034884236
Sensitivity: 0.7698815566835872
Specificity: 0.7566807313642757
Threshold: 0.16
Accuracy:  0.7605563835072032

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  9.00it/s]
Loss: 0.4947226117214849
AUROC: 0.8343896314524452
AUPRC: 0.6763550023213787
Sensitivity: 0.7681992337164751
Specificity: 0.7518298261665142
Threshold: 0.15
Accuracy:  0.7561468507915123

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0006.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.91it/s]
Loss: 0.4998969052519117
AUROC: 0.8407024257438702
AUPRC: 0.6912671782627378
Sensitivity: 0.7478849407783418
Specificity: 0.7679324894514767
Threshold: 0.2
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  8.99it/s]
Loss: 0.4771448570473861
AUROC: 0.8334344061068988
AUPRC: 0.6765939507776564
Sensitivity: 0.7541507024265645
Specificity: 0.7646386093321135
Threshold: 0.19
Accuracy:  0.7618726844055237

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0007.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.91it/s]
Loss: 0.5920856240249815
AUROC: 0.8446219785293227
AUPRC: 0.6935938292894753
Sensitivity: 0.7766497461928934
Specificity: 0.7566807313642757
Threshold: 0.1
Accuracy:  0.7625434674615003

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  9.05it/s]
Loss: 0.5605155405217922
AUROC: 0.8361806789753441
AUPRC: 0.6781375436202868
Sensitivity: 0.7490421455938697
Specificity: 0.7735590118938701
Threshold: 0.1
Accuracy:  0.7670932974065342

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0008.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.89it/s]
Loss: 0.5441140215548258
AUROC: 0.8419565874426761
AUPRC: 0.6853948494173477
Sensitivity: 0.7698815566835872
Specificity: 0.7587904360056259
Threshold: 0.14
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  9.00it/s]
Loss: 0.5164377494685112
AUROC: 0.8336472139552872
AUPRC: 0.6705823655571252
Sensitivity: 0.7515964240102171
Specificity: 0.7689844464775847
Threshold: 0.14
Accuracy:  0.7643987874705288

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0009.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.91it/s]
Loss: 0.5046135366909088
AUROC: 0.8411284123550397
AUPRC: 0.6782056006126269
Sensitivity: 0.7495769881556683
Specificity: 0.7714486638537271
Threshold: 0.19
Accuracy:  0.7650273224043715

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  9.01it/s]
Loss: 0.4823235634273739
AUROC: 0.8324169596608629
AUPRC: 0.6645127138652718
Sensitivity: 0.7515964240102171
Specificity: 0.7680695333943275
Threshold: 0.18
Accuracy:  0.7637251599865275

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0010.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.83it/s]
Loss: 0.4942032841462938
AUROC: 0.8373694969788269
AUPRC: 0.6762197145129724
Sensitivity: 0.7681895093062606
Specificity: 0.759493670886076
Threshold: 0.2
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  8.96it/s]
Loss: 0.4727263988586523
AUROC: 0.8304410745730115
AUPRC: 0.6656407136992856
Sensitivity: 0.764367816091954
Specificity: 0.7548032936870998
Threshold: 0.19
Accuracy:  0.7573256988885146

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0011.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.89it/s]
Loss: 0.48283794924380286
AUROC: 0.8364639779534082
AUPRC: 0.6670420760916844
Sensitivity: 0.7715736040609137
Specificity: 0.7623066104078763
Threshold: 0.23
Accuracy:  0.7650273224043715

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  9.05it/s]
Loss: 0.4613889888009077
AUROC: 0.8297886293713974
AUPRC: 0.6589176250623086
Sensitivity: 0.7618135376756067
Specificity: 0.7568618481244281
Threshold: 0.22
Accuracy:  0.7581677332435164

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0012.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.88it/s]
Loss: 0.5259104252807678
AUROC: 0.8335165789705403
AUPRC: 0.6668268282842182
Sensitivity: 0.751269035532995
Specificity: 0.7665260196905767
Threshold: 0.17
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  8.99it/s]
Loss: 0.4976809254937595
AUROC: 0.8276379117547052
AUPRC: 0.6567122421235916
Sensitivity: 0.7509578544061303
Specificity: 0.7602927721866423
Threshold: 0.16
Accuracy:  0.7578309195015157

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0013.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.88it/s]
Loss: 0.553800642490387
AUROC: 0.8347076756123856
AUPRC: 0.6669750079214579
Sensitivity: 0.7529610829103215
Specificity: 0.7679324894514767
Threshold: 0.14
Accuracy:  0.7635370094386488

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  9.06it/s]
Loss: 0.5237114262837236
AUROC: 0.8279904979908135
AUPRC: 0.6556031316801104
Sensitivity: 0.7573435504469987
Specificity: 0.7543458371454712
Threshold: 0.13
Accuracy:  0.7551364095655103

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0014.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.81it/s]
Loss: 0.6040375067128075
AUROC: 0.8375717811237956
AUPRC: 0.6693517766534998
Sensitivity: 0.7715736040609137
Specificity: 0.750351617440225
Threshold: 0.09
Accuracy:  0.756582215598609

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  9.01it/s]
Loss: 0.5708437273579259
AUROC: 0.8306322657010419
AUPRC: 0.6595712803544035
Sensitivity: 0.7503192848020435
Specificity: 0.7639524245196706
Threshold: 0.09
Accuracy:  0.7603570225665207

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0015.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.88it/s]
Loss: 0.48880976911575075
AUROC: 0.8326574663077908
AUPRC: 0.6538748247298727
Sensitivity: 0.7698815566835872
Specificity: 0.749648382559775
Threshold: 0.2
Accuracy:  0.7555886736214605

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  9.05it/s]
Loss: 0.4654412545984791
AUROC: 0.8268902361363794
AUPRC: 0.6484852423415244
Sensitivity: 0.743933588761175
Specificity: 0.762580054894785
Threshold: 0.2
Accuracy:  0.7576625126305153

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0016.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.87it/s]
Loss: 0.5276062140862147
AUROC: 0.8345672666176425
AUPRC: 0.659656155953139
Sensitivity: 0.7428087986463621
Specificity: 0.7665260196905767
Threshold: 0.15
Accuracy:  0.7595628415300546

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:21<00:00,  8.57it/s]
Loss: 0.5006596406981829
AUROC: 0.8287367130199261
AUPRC: 0.6546367195120696
Sensitivity: 0.7452107279693486
Specificity: 0.7648673376029277
Threshold: 0.14
Accuracy:  0.7596833950825194

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0017.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.90it/s]
Loss: 0.5232124011667948
AUROC: 0.8259035556793058
AUPRC: 0.6380412024169326
Sensitivity: 0.754653130287648
Specificity: 0.7531645569620253
Threshold: 0.17
Accuracy:  0.7536015896671634

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  9.05it/s]
Loss: 0.49274538849951116
AUROC: 0.8210264816509097
AUPRC: 0.6337828402593408
Sensitivity: 0.7490421455938697
Specificity: 0.7483989021043
Threshold: 0.16
Accuracy:  0.7485685415964971

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0018.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.86it/s]
Loss: 0.47475186463386293
AUROC: 0.8278788008595886
AUPRC: 0.6424540148624521
Sensitivity: 0.7478849407783418
Specificity: 0.750351617440225
Threshold: 0.24
Accuracy:  0.7496274217585693

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  8.97it/s]
Loss: 0.4538284193283768
AUROC: 0.8226143612142287
AUPRC: 0.6418237493211623
Sensitivity: 0.7432950191570882
Specificity: 0.7564043915827996
Threshold: 0.23
Accuracy:  0.7529471202425059

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0019.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.87it/s]
Loss: 0.5336119589351472
AUROC: 0.8267900361969629
AUPRC: 0.6353857785810267
Sensitivity: 0.7495769881556683
Specificity: 0.7559774964838256
Threshold: 0.15
Accuracy:  0.7540983606557377

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  9.03it/s]
Loss: 0.5039222880557019
AUROC: 0.8206050286333909
AUPRC: 0.6339135901786375
Sensitivity: 0.7432950191570882
Specificity: 0.7518298261665142
Threshold: 0.14
Accuracy:  0.7495789828224991

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0020.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.86it/s]
Loss: 0.6295018106225937
AUROC: 0.8303954536043465
AUPRC: 0.6499923448359972
Sensitivity: 0.7580372250423012
Specificity: 0.7587904360056259
Threshold: 0.08
Accuracy:  0.7585692995529061

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  9.03it/s]
Loss: 0.5912910827425539
AUROC: 0.8243325253353805
AUPRC: 0.6455717560491145
Sensitivity: 0.7394636015325671
Specificity: 0.7646386093321135
Threshold: 0.08
Accuracy:  0.757999326372516

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0021.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.87it/s]
Loss: 0.5208025636180998
AUROC: 0.8222029457331134
AUPRC: 0.6335328680985912
Sensitivity: 0.7411167512690355
Specificity: 0.7609001406469761
Threshold: 0.17
Accuracy:  0.7550919026328863

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  9.02it/s]
Loss: 0.4916617099035491
AUROC: 0.8178690529189
AUPRC: 0.6296368838139891
Sensitivity: 0.7567049808429118
Specificity: 0.7390210430009149
Threshold: 0.15
Accuracy:  0.7436847423374874

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0022.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.88it/s]
Loss: 0.5215200715594821
AUROC: 0.8221731980647358
AUPRC: 0.6354695190714938
Sensitivity: 0.7495769881556683
Specificity: 0.7468354430379747
Threshold: 0.16
Accuracy:  0.7476403378042722

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  8.94it/s]
Loss: 0.4918729094488005
AUROC: 0.8183035051804178
AUPRC: 0.6313808210124947
Sensitivity: 0.7509578544061303
Specificity: 0.7438243366880146
Threshold: 0.15
Accuracy:  0.7457056247894914

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0023.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.85it/s]
Loss: 0.5494039512815929
AUROC: 0.8195446940868776
AUPRC: 0.6293862557109413
Sensitivity: 0.7377326565143824
Specificity: 0.7580872011251758
Threshold: 0.14
Accuracy:  0.7521112767014406

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:21<00:00,  8.82it/s]
Loss: 0.5163316911146525
AUROC: 0.8149302013626714
AUPRC: 0.6237055527772545
Sensitivity: 0.7426564495530013
Specificity: 0.7495425434583715
Threshold: 0.13
Accuracy:  0.7477265072414955

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0024.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.86it/s]
Loss: 0.49020790959161425
AUROC: 0.8202741069155
AUPRC: 0.6261429565331393
Sensitivity: 0.7428087986463621
Specificity: 0.7531645569620253
Threshold: 0.21
Accuracy:  0.7501241927471436

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  8.99it/s]
Loss: 0.46397736580461585
AUROC: 0.8160268117440721
AUPRC: 0.624717379357845
Sensitivity: 0.7388250319284803
Specificity: 0.7520585544373285
Threshold: 0.2
Accuracy:  0.7485685415964971

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0025.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.85it/s]
Loss: 0.5113674468464322
AUROC: 0.8103229168897742
AUPRC: 0.6138183739485745
Sensitivity: 0.7377326565143824
Specificity: 0.7376933895921237
Threshold: 0.19
Accuracy:  0.7377049180327869

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  9.05it/s]
Loss: 0.48033287011647735
AUROC: 0.8085948226202035
AUPRC: 0.6120864274290376
Sensitivity: 0.7401021711366539
Specificity: 0.7397072278133577
Threshold: 0.18
Accuracy:  0.7398113843044796

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0026.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.91it/s]
Loss: 0.577661522324123
AUROC: 0.8241555826854292
AUPRC: 0.6354615459412466
Sensitivity: 0.7614213197969543
Specificity: 0.7461322081575246
Threshold: 0.1
Accuracy:  0.7506209637357178

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  8.95it/s]
Loss: 0.5444240323117664
AUROC: 0.8187398562079131
AUPRC: 0.6336783683239768
Sensitivity: 0.7401021711366539
Specificity: 0.7534309240622141
Threshold: 0.1
Accuracy:  0.7499157965644998

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0027.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.86it/s]
Loss: 0.6162330654878465
AUROC: 0.8187879134033474
AUPRC: 0.6287684492356941
Sensitivity: 0.7326565143824028
Specificity: 0.7587904360056259
Threshold: 0.09
Accuracy:  0.7511177347242921

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  9.03it/s]
Loss: 0.576936356242626
AUROC: 0.8150568344474708
AUPRC: 0.6272402141051772
Sensitivity: 0.7420178799489144
Specificity: 0.7442817932296432
Threshold: 0.08
Accuracy:  0.7436847423374874

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0028.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.89it/s]
Loss: 0.5453022224089455
AUROC: 0.8148743101515703
AUPRC: 0.6235673862530877
Sensitivity: 0.7343485617597293
Specificity: 0.7482419127988749
Threshold: 0.14
Accuracy:  0.7441629408842524

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  8.98it/s]
Loss: 0.5114067932290416
AUROC: 0.8123960060480079
AUPRC: 0.6240723874195694
Sensitivity: 0.7413793103448276
Specificity: 0.7442817932296432
Threshold: 0.13
Accuracy:  0.743516335466487

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0029.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:08<00:00,  7.54it/s]
Loss: 0.49166179081750294
AUROC: 0.8119126322878814
AUPRC: 0.6106345076048291
Sensitivity: 0.7461928934010152
Specificity: 0.7468354430379747
Threshold: 0.22
Accuracy:  0.7466467958271237

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  8.97it/s]
Loss: 0.4660358131732992
AUROC: 0.8071229868698871
AUPRC: 0.6091726836339224
Sensitivity: 0.7330779054916986
Specificity: 0.7438243366880146
Threshold: 0.21
Accuracy:  0.740990232401482

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0030.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.79it/s]
Loss: 0.5221308337317573
AUROC: 0.8065580519798858
AUPRC: 0.6057800910376284
Sensitivity: 0.7360406091370558
Specificity: 0.740506329113924
Threshold: 0.17
Accuracy:  0.7391952309985097

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  8.87it/s]
Loss: 0.4899766756001339
AUROC: 0.8041690182153003
AUPRC: 0.6073871675768734
Sensitivity: 0.731162196679438
Specificity: 0.7381061299176578
Threshold: 0.16
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0031.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.79it/s]
Loss: 0.49897735175632296
AUROC: 0.8173826335491825
AUPRC: 0.6255182659843671
Sensitivity: 0.739424703891709
Specificity: 0.7545710267229254
Threshold: 0.19
Accuracy:  0.7501241927471436

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  8.97it/s]
Loss: 0.4706919061480671
AUROC: 0.8141297984737426
AUPRC: 0.6286381962077786
Sensitivity: 0.7452107279693486
Specificity: 0.7367337602927722
Threshold: 0.17
Accuracy:  0.7389693499494779

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0032.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.81it/s]
Loss: 0.5817078891254607
AUROC: 0.8009048050813778
AUPRC: 0.6022347851213813
Sensitivity: 0.7343485617597293
Specificity: 0.7440225035161744
Threshold: 0.12
Accuracy:  0.7411823149528067

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  8.92it/s]
Loss: 0.5383136187109255
AUROC: 0.8016023978200999
AUPRC: 0.6052855926644853
Sensitivity: 0.7330779054916986
Specificity: 0.7262122598353157
Threshold: 0.11
Accuracy:  0.7280229033344561

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0033.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.83it/s]
Loss: 0.5286484899975005
AUROC: 0.7980418894767027
AUPRC: 0.5899522184666681
Sensitivity: 0.7529610829103215
Specificity: 0.729957805907173
Threshold: 0.17
Accuracy:  0.7367113760556383

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  8.96it/s]
Loss: 0.4941028497952928
AUROC: 0.7970506906250037
AUPRC: 0.5942276876919408
Sensitivity: 0.7369093231162197
Specificity: 0.72483989021043
Threshold: 0.16
Accuracy:  0.7280229033344561

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0034.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.81it/s]
Loss: 0.5635850334924365
AUROC: 0.7984952439427799
AUPRC: 0.5945016667694436
Sensitivity: 0.7377326565143824
Specificity: 0.7285513361462729
Threshold: 0.13
Accuracy:  0.7312468951813215

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  8.87it/s]
Loss: 0.523815357236452
AUROC: 0.7980856641416001
AUPRC: 0.5989020997472384
Sensitivity: 0.7215836526181354
Specificity: 0.7387923147301007
Threshold: 0.13
Accuracy:  0.7342539575614685

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0035.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.76it/s]
Loss: 0.5761999237158942
AUROC: 0.8049528677942223
AUPRC: 0.6095628098805594
Sensitivity: 0.7445008460236887
Specificity: 0.7376933895921237
Threshold: 0.11
Accuracy:  0.739692001987084

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  8.95it/s]
Loss: 0.5350185002610889
AUROC: 0.8064422792669946
AUPRC: 0.6136434840709798
Sensitivity: 0.7266922094508301
Specificity: 0.7401646843549863
Threshold: 0.11
Accuracy:  0.7366116537554732

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0036.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.77it/s]
Loss: 0.5876709617792614
AUROC: 0.8037010859088864
AUPRC: 0.6081225427582024
Sensitivity: 0.7309644670050761
Specificity: 0.7461322081575246
Threshold: 0.11
Accuracy:  0.741679085941381

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  8.90it/s]
Loss: 0.5443004373541122
AUROC: 0.8057492296852489
AUPRC: 0.6129977088174636
Sensitivity: 0.7375478927203065
Specificity: 0.729871912168344
Threshold: 0.1
Accuracy:  0.7318962613674638

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0037.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.81it/s]
Loss: 0.5920771015068841
AUROC: 0.8025706745105319
AUPRC: 0.6017200637909081
Sensitivity: 0.754653130287648
Specificity: 0.7334739803094233
Threshold: 0.1
Accuracy:  0.739692001987084

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  8.94it/s]
Loss: 0.5513290371946109
AUROC: 0.8023375854006514
AUPRC: 0.6045312785990169
Sensitivity: 0.7273307790549169
Specificity: 0.7376486733760292
Threshold: 0.1
Accuracy:  0.7349275850454698

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0038.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63/63 [00:07<00:00,  8.83it/s]
Loss: 0.5475775306186978
AUROC: 0.8059607187988604
AUPRC: 0.6073842329176282
Sensitivity: 0.7428087986463621
Specificity: 0.7341772151898734
Threshold: 0.13
Accuracy:  0.7367113760556383

AUROC/AUPRC on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  8.91it/s]
Loss: 0.5121046447305269
AUROC: 0.8048870438725947
AUPRC: 0.6113923736527123
Sensitivity: 0.7298850574712644
Specificity: 0.7403934126258005
Threshold: 0.13
Accuracy:  0.7376220949814752


Plot AUROC/AUPRC for Each Intermediate Model
  Epoch with best Validation Loss:      18, 0.4749
  Epoch with best model Test AUROC:      3, 0.8373
  Epoch with best model Test Accuracy:   4, 0.7689

AUROC/AUPRC Plots - Best Model Based on Validation Loss
  Epoch with best Validation Loss:   18, 0.4749
  Best Model Based on Validation Loss:
    ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0018.model

Generate Stats Based on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  8.96it/s]
Loss: 0.4538284193283768
AUROC: 0.8226143612142287
AUPRC: 0.6418237493211623
Sensitivity: 0.7432950191570882
Specificity: 0.7564043915827996
Threshold: 0.23
Accuracy:  0.7529471202425059
<Figure size 640x480 with 0 Axes>
best_model_val_test_auroc: 0.8226143612142287
best_model_val_test_auprc: 0.6418237493211623

AUROC/AUPRC Plots - Best Model Based on Model AUROC
  Epoch with best model Test AUROC:   3, 0.8373
  Best Model Based on Model AUROC:
    ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_32_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_177b3b04_0003.model

Generate Stats Based on Test Data
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 186/186 [00:20<00:00,  8.96it/s]
Loss: 0.5879656359833735
AUROC: 0.8372709357936666
AUPRC: 0.6862217604280579
Sensitivity: 0.7650063856960408
Specificity: 0.7548032936870998
Threshold: 0.08
Accuracy:  0.757494105759515
best_model_auroc_test_auroc: 0.8372709357936666
best_model_auroc_test_auprc: 0.6862217604280579

Total Processing Time: 3424.1770 sec
In [109]:
RUN_ME = True

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=True, 
        useEeg=False, 
        useEcg=False,
        nResiduals=12, 
        skip_connection=False,
        batch_size=64,
        learning_rate=1e-4,
        weight_decay=0.0,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
Experiment Setup
  name:              ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3
  prediction_window: 003
  max_cases:         _ALL
  use_abp:           True
  use_eeg:           False
  use_ecg:           False
  n_residuals:       12
  skip_connection:   False
  batch_size:        64
  learning_rate:     0.0001
  weight_decay:      0.0
  balance_labels:    False
  max_epochs:        200
  patience:          20
  device:            mps

Model Architecture
HypotensionCNN(
  (abpResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
  )
  (abpFc): Linear(in_features=2814, out_features=32, bias=True)
  (fullLinear1): Linear(in_features=32, out_features=16, bias=True)
  (fullLinear2): Linear(in_features=16, out_features=1, bias=True)
  (sigmoid): Sigmoid()
)

Training Loop
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.85it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
[2024-05-03 08:03:39.253666] Completed epoch 0 with training loss 0.47094294, validation loss 0.61253893
Validation loss improved to 0.61253893. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.85it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
[2024-05-03 08:04:33.695112] Completed epoch 1 with training loss 0.43697029, validation loss 0.58059061
Validation loss improved to 0.58059061. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.87it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.85it/s]
[2024-05-03 08:05:27.852383] Completed epoch 2 with training loss 0.43396991, validation loss 0.62242520
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.85it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.85it/s]
[2024-05-03 08:06:22.235634] Completed epoch 3 with training loss 0.43049958, validation loss 0.55502057
Validation loss improved to 0.55502057. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.86it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
[2024-05-03 08:07:16.636722] Completed epoch 4 with training loss 0.42712519, validation loss 0.68252599
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.87it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.79it/s]
[2024-05-03 08:08:10.909614] Completed epoch 5 with training loss 0.42499369, validation loss 0.62186766
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.86it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 08:09:05.229135] Completed epoch 6 with training loss 0.42439047, validation loss 0.48520726
Validation loss improved to 0.48520726. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.86it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
[2024-05-03 08:09:59.577435] Completed epoch 7 with training loss 0.42120793, validation loss 0.56098127
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.86it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
[2024-05-03 08:10:53.953775] Completed epoch 8 with training loss 0.42085880, validation loss 0.62926602
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.87it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
[2024-05-03 08:11:48.222050] Completed epoch 9 with training loss 0.41855049, validation loss 0.51958227
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.86it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
[2024-05-03 08:12:42.605508] Completed epoch 10 with training loss 0.41983190, validation loss 0.51372123
No improvement in validation loss. 4 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.87it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 08:13:36.755973] Completed epoch 11 with training loss 0.41402721, validation loss 0.51455575
No improvement in validation loss. 5 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.87it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 08:14:31.004971] Completed epoch 12 with training loss 0.41331598, validation loss 0.53737944
No improvement in validation loss. 6 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:48<00:00,  3.77it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.85it/s]
[2024-05-03 08:15:26.471856] Completed epoch 13 with training loss 0.41377324, validation loss 0.49935731
No improvement in validation loss. 7 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.86it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.85it/s]
[2024-05-03 08:16:20.743524] Completed epoch 14 with training loss 0.40912944, validation loss 0.53403550
No improvement in validation loss. 8 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.86it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 08:17:15.022461] Completed epoch 15 with training loss 0.41121766, validation loss 0.50837457
No improvement in validation loss. 9 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.85it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.81it/s]
[2024-05-03 08:18:09.479351] Completed epoch 16 with training loss 0.41100967, validation loss 0.50587934
No improvement in validation loss. 10 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.86it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 08:19:03.821074] Completed epoch 17 with training loss 0.40674803, validation loss 0.55522180
No improvement in validation loss. 11 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.87it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
[2024-05-03 08:19:58.046394] Completed epoch 18 with training loss 0.40578261, validation loss 0.52220219
No improvement in validation loss. 12 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:48<00:00,  3.80it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.85it/s]
[2024-05-03 08:20:53.054552] Completed epoch 19 with training loss 0.40432549, validation loss 0.51247686
No improvement in validation loss. 13 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.87it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 08:21:47.238521] Completed epoch 20 with training loss 0.40136328, validation loss 0.58299303
No improvement in validation loss. 14 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.86it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
[2024-05-03 08:22:41.521487] Completed epoch 21 with training loss 0.40173084, validation loss 0.51988268
No improvement in validation loss. 15 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.86it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 08:23:35.838579] Completed epoch 22 with training loss 0.40065974, validation loss 0.53047198
No improvement in validation loss. 16 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.85it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
[2024-05-03 08:24:30.247875] Completed epoch 23 with training loss 0.39947602, validation loss 0.52576113
No improvement in validation loss. 17 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.87it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
[2024-05-03 08:25:24.405097] Completed epoch 24 with training loss 0.39551660, validation loss 0.48209840
Validation loss improved to 0.48209840. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.85it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
[2024-05-03 08:26:18.929267] Completed epoch 25 with training loss 0.39797062, validation loss 0.52394688
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.85it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.96it/s]
[2024-05-03 08:27:13.187641] Completed epoch 26 with training loss 0.39693525, validation loss 0.54847449
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.87it/s]
[2024-05-03 08:28:06.485142] Completed epoch 27 with training loss 0.39298823, validation loss 0.59521955
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.95it/s]
[2024-05-03 08:28:59.988620] Completed epoch 28 with training loss 0.39348006, validation loss 0.55170155
No improvement in validation loss. 4 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.95it/s]
[2024-05-03 08:29:53.525913] Completed epoch 29 with training loss 0.39465314, validation loss 0.49684691
No improvement in validation loss. 5 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.96it/s]
[2024-05-03 08:30:46.875083] Completed epoch 30 with training loss 0.39146405, validation loss 0.51178503
No improvement in validation loss. 6 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.86it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.91it/s]
[2024-05-03 08:31:41.156226] Completed epoch 31 with training loss 0.38891706, validation loss 0.55730402
No improvement in validation loss. 7 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.89it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.89it/s]
[2024-05-03 08:32:35.022477] Completed epoch 32 with training loss 0.38970280, validation loss 0.57711363
No improvement in validation loss. 8 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.90it/s]
[2024-05-03 08:33:28.706137] Completed epoch 33 with training loss 0.38747329, validation loss 0.54083574
No improvement in validation loss. 9 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.89it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.91it/s]
[2024-05-03 08:34:22.528146] Completed epoch 34 with training loss 0.38737273, validation loss 0.53990364
No improvement in validation loss. 10 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.90it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.90it/s]
[2024-05-03 08:35:16.302213] Completed epoch 35 with training loss 0.38255551, validation loss 0.57055330
No improvement in validation loss. 11 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.90it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.87it/s]
[2024-05-03 08:36:10.152355] Completed epoch 36 with training loss 0.38315257, validation loss 0.53970414
No improvement in validation loss. 12 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.90it/s]
[2024-05-03 08:37:03.801972] Completed epoch 37 with training loss 0.38244173, validation loss 0.55708456
No improvement in validation loss. 13 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.90it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.90it/s]
[2024-05-03 08:37:57.538943] Completed epoch 38 with training loss 0.38026860, validation loss 0.54562074
No improvement in validation loss. 14 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.89it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.89it/s]
[2024-05-03 08:38:51.437925] Completed epoch 39 with training loss 0.37661877, validation loss 0.55871511
No improvement in validation loss. 15 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.92it/s]
[2024-05-03 08:39:45.096314] Completed epoch 40 with training loss 0.37816218, validation loss 0.52348590
No improvement in validation loss. 16 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.90it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.90it/s]
[2024-05-03 08:40:38.818458] Completed epoch 41 with training loss 0.37664235, validation loss 0.61811584
No improvement in validation loss. 17 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.88it/s]
[2024-05-03 08:41:32.484977] Completed epoch 42 with training loss 0.37665844, validation loss 0.54184830
No improvement in validation loss. 18 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.92it/s]
[2024-05-03 08:42:26.110505] Completed epoch 43 with training loss 0.37444049, validation loss 0.56033969
No improvement in validation loss. 19 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.88it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.94it/s]
[2024-05-03 08:43:19.992962] Completed epoch 44 with training loss 0.37356988, validation loss 0.52771819
No improvement in validation loss. 20 epochs without improvement.
Early stopping due to no improvement in validation loss.

Plot Validation and Loss Values from Training
  Epoch with best Validation Loss:   24, 0.4821
Generate AUROC/AUPRC for Each Intermediate Model

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0000.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:05<00:00,  5.58it/s]
Loss: 0.6103850482031703
AUROC: 0.8434939469444385
AUPRC: 0.6958527836006979
Sensitivity: 0.751269035532995
Specificity: 0.7735583684950773
Threshold: 0.12
Accuracy:  0.7670144063586687

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.83it/s]
Loss: 0.5700992103866351
AUROC: 0.8320551717127103
AUPRC: 0.67628575644109
Sensitivity: 0.7752234993614304
Specificity: 0.7360475754803294
Threshold: 0.11
Accuracy:  0.7463792522734928

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0001.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.86it/s]
Loss: 0.581092425622046
AUROC: 0.8443352110061613
AUPRC: 0.7018164627859347
Sensitivity: 0.766497461928934
Specificity: 0.7658227848101266
Threshold: 0.12
Accuracy:  0.7660208643815202

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.83it/s]
Loss: 0.5466238277894194
AUROC: 0.8349513740639085
AUPRC: 0.683267535230277
Sensitivity: 0.7420178799489144
Specificity: 0.7781335773101555
Threshold: 0.12
Accuracy:  0.7686089592455372

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0002.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.86it/s]
Loss: 0.619416537694633
AUROC: 0.8439365922498995
AUPRC: 0.7039521597973132
Sensitivity: 0.7614213197969543
Specificity: 0.7693389592123769
Threshold: 0.09
Accuracy:  0.7670144063586687

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.71it/s]
Loss: 0.5850236885329728
AUROC: 0.8356724669585508
AUPRC: 0.6857802475311823
Sensitivity: 0.7413793103448276
Specificity: 0.7781335773101555
Threshold: 0.09
Accuracy:  0.7684405523745369

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0003.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.87it/s]
Loss: 0.5596849955618382
AUROC: 0.8445279758972492
AUPRC: 0.7035393139444178
Sensitivity: 0.7580372250423012
Specificity: 0.7714486638537271
Threshold: 0.13
Accuracy:  0.767511177347243

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.84it/s]
Loss: 0.5265637520820864
AUROC: 0.8364369393528306
AUPRC: 0.6859489978279416
Sensitivity: 0.7669220945083014
Specificity: 0.7529734675205856
Threshold: 0.12
Accuracy:  0.7566520714045133

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0004.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
Loss: 0.6884623467922211
AUROC: 0.8446362574101441
AUPRC: 0.7053640738182402
Sensitivity: 0.7597292724196277
Specificity: 0.770042194092827
Threshold: 0.06
Accuracy:  0.7670144063586687

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.82it/s]
Loss: 0.6472530698263517
AUROC: 0.8365383042442385
AUPRC: 0.6866887677901886
Sensitivity: 0.7426564495530013
Specificity: 0.7779048490393413
Threshold: 0.06
Accuracy:  0.7686089592455372

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0005.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.85it/s]
Loss: 0.6149609759449959
AUROC: 0.8441876625710079
AUPRC: 0.7030952523102496
Sensitivity: 0.7715736040609137
Specificity: 0.7538677918424754
Threshold: 0.08
Accuracy:  0.7590660705414803

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.84it/s]
Loss: 0.5855953879253839
AUROC: 0.8359764155738538
AUPRC: 0.6844343322604309
Sensitivity: 0.7573435504469987
Specificity: 0.7616651418115279
Threshold: 0.08
Accuracy:  0.7605254294375211

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0006.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.77it/s]
Loss: 0.49165009520947933
AUROC: 0.8416638703858392
AUPRC: 0.6960534314608142
Sensitivity: 0.7749576988155669
Specificity: 0.7559774964838256
Threshold: 0.22
Accuracy:  0.7615499254843517

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.82it/s]
Loss: 0.4658416974288161
AUROC: 0.8334623033608742
AUPRC: 0.6778461106769887
Sensitivity: 0.7650063856960408
Specificity: 0.7488563586459286
Threshold: 0.21
Accuracy:  0.7531155271135063

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0007.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
Loss: 0.5581887187436223
AUROC: 0.8440889003119936
AUPRC: 0.6970991150129057
Sensitivity: 0.7732656514382402
Specificity: 0.7566807313642757
Threshold: 0.12
Accuracy:  0.7615499254843517

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.83it/s]
Loss: 0.5313699328771202
AUROC: 0.836056163744904
AUPRC: 0.6819117416004172
Sensitivity: 0.7528735632183908
Specificity: 0.7715004574565416
Threshold: 0.12
Accuracy:  0.7665880767935331

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0008.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.86it/s]
Loss: 0.6249304385855794
AUROC: 0.8430167943436594
AUPRC: 0.6978085996077523
Sensitivity: 0.7461928934010152
Specificity: 0.7763713080168776
Threshold: 0.09
Accuracy:  0.767511177347243

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.82it/s]
Loss: 0.5919084239711043
AUROC: 0.8357555744847918
AUPRC: 0.6812435860762255
Sensitivity: 0.7624521072796935
Specificity: 0.7580054894784996
Threshold: 0.08
Accuracy:  0.7591781744695184

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0009.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.86it/s]
Loss: 0.5194228002801538
AUROC: 0.841444927546579
AUPRC: 0.6890211667229409
Sensitivity: 0.7698815566835872
Specificity: 0.7552742616033755
Threshold: 0.17
Accuracy:  0.7595628415300546

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.83it/s]
Loss: 0.4920964971665413
AUROC: 0.8337236027711468
AUPRC: 0.6714451906080384
Sensitivity: 0.7713920817369093
Specificity: 0.7493138151875571
Threshold: 0.16
Accuracy:  0.7551364095655103

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0010.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.85it/s]
Loss: 0.5126441307365894
AUROC: 0.8390758232369747
AUPRC: 0.6881201150375387
Sensitivity: 0.7580372250423012
Specificity: 0.7665260196905767
Threshold: 0.18
Accuracy:  0.764033780427223

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.79it/s]
Loss: 0.4883019239992224
AUROC: 0.8325487778373699
AUPRC: 0.671024357568772
Sensitivity: 0.7567049808429118
Specificity: 0.7552607502287283
Threshold: 0.17
Accuracy:  0.7556416301785113

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0011.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.85it/s]
Loss: 0.517410472035408
AUROC: 0.8395375070501975
AUPRC: 0.6857073931646203
Sensitivity: 0.7732656514382402
Specificity: 0.7566807313642757
Threshold: 0.17
Accuracy:  0.7615499254843517

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.84it/s]
Loss: 0.4932321423804888
AUROC: 0.8325745572369858
AUPRC: 0.6700646381273438
Sensitivity: 0.7477650063856961
Specificity: 0.7678408051235133
Threshold: 0.17
Accuracy:  0.762546311889525

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0012.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.88it/s]
Loss: 0.5395029354840517
AUROC: 0.840225273143091
AUPRC: 0.6858552413346433
Sensitivity: 0.7681895093062606
Specificity: 0.760196905766526
Threshold: 0.14
Accuracy:  0.7625434674615003

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.83it/s]
Loss: 0.5129867431617552
AUROC: 0.8333660505317129
AUPRC: 0.6721659725173765
Sensitivity: 0.7720306513409961
Specificity: 0.7456541628545288
Threshold: 0.13
Accuracy:  0.7526103065005052

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0013.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
Loss: 0.5026612691581249
AUROC: 0.8382179004809603
AUPRC: 0.6772726110540852
Sensitivity: 0.7631133671742809
Specificity: 0.7672292545710268
Threshold: 0.2
Accuracy:  0.7660208643815202

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.84it/s]
Loss: 0.47831131565955376
AUROC: 0.8314022153048717
AUPRC: 0.6651844242316229
Sensitivity: 0.7592592592592593
Specificity: 0.7552607502287283
Threshold: 0.19
Accuracy:  0.7563152576625126

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0014.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
Loss: 0.5298278918489814
AUROC: 0.839329273371553
AUPRC: 0.6764844184196327
Sensitivity: 0.7648054145516074
Specificity: 0.7651195499296765
Threshold: 0.15
Accuracy:  0.7650273224043715

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.82it/s]
Loss: 0.5048218571370647
AUROC: 0.8329399966581719
AUPRC: 0.6674102436213547
Sensitivity: 0.7611749680715197
Specificity: 0.7605215004574566
Threshold: 0.14
Accuracy:  0.7606938363085214

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0015.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.81it/s]
Loss: 0.508006208576262
AUROC: 0.838948503216318
AUPRC: 0.6728172603950292
Sensitivity: 0.7732656514382402
Specificity: 0.7630098452883263
Threshold: 0.17
Accuracy:  0.7660208643815202

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.84it/s]
Loss: 0.48527055017409787
AUROC: 0.8319803895449855
AUPRC: 0.6634618821697573
Sensitivity: 0.7630906768837803
Specificity: 0.7536596523330283
Threshold: 0.16
Accuracy:  0.7561468507915123

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0016.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
Loss: 0.5036829328164458
AUROC: 0.8382131408540198
AUPRC: 0.6697021107182151
Sensitivity: 0.766497461928934
Specificity: 0.7693389592123769
Threshold: 0.18
Accuracy:  0.7685047193243915

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.82it/s]
Loss: 0.48248774069611744
AUROC: 0.831327214048765
AUPRC: 0.6633825436619524
Sensitivity: 0.7675606641123882
Specificity: 0.75
Threshold: 0.16
Accuracy:  0.7546311889525092

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0017.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.86it/s]
Loss: 0.555969518609345
AUROC: 0.8370315634660556
AUPRC: 0.6670168269582768
Sensitivity: 0.7648054145516074
Specificity: 0.7665260196905767
Threshold: 0.13
Accuracy:  0.7660208643815202

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.83it/s]
Loss: 0.52690134590031
AUROC: 0.8312124117365938
AUPRC: 0.658839473815592
Sensitivity: 0.7586206896551724
Specificity: 0.755946935041171
Threshold: 0.12
Accuracy:  0.7566520714045133

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0018.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
Loss: 0.5191493146121502
AUROC: 0.8355037232181742
AUPRC: 0.6595591036014967
Sensitivity: 0.7614213197969543
Specificity: 0.7637130801687764
Threshold: 0.16
Accuracy:  0.7630402384500745

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.82it/s]
Loss: 0.4950404567744142
AUROC: 0.8302065039453437
AUPRC: 0.6567562418229962
Sensitivity: 0.756066411238825
Specificity: 0.7607502287282708
Threshold: 0.15
Accuracy:  0.7595149882115191

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0019.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
Loss: 0.5072570694610476
AUROC: 0.8327276708051623
AUPRC: 0.6499590320514537
Sensitivity: 0.766497461928934
Specificity: 0.7489451476793249
Threshold: 0.17
Accuracy:  0.7540983606557377

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.81it/s]
Loss: 0.4848978562701133
AUROC: 0.8275457485753412
AUPRC: 0.6476882884712413
Sensitivity: 0.7477650063856961
Specificity: 0.7648673376029277
Threshold: 0.17
Accuracy:  0.7603570225665207

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0020.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.86it/s]
Loss: 0.5860684402287006
AUROC: 0.8359082915081115
AUPRC: 0.6661602640466107
Sensitivity: 0.766497461928934
Specificity: 0.7566807313642757
Threshold: 0.1
Accuracy:  0.7595628415300546

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.82it/s]
Loss: 0.5533519265472248
AUROC: 0.830709822988272
AUPRC: 0.6598881409924533
Sensitivity: 0.7656449553001277
Specificity: 0.7438243366880146
Threshold: 0.09
Accuracy:  0.7495789828224991

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0021.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.86it/s]
Loss: 0.5204073023051023
AUROC: 0.8314842182669722
AUPRC: 0.6528877616660044
Sensitivity: 0.7580372250423012
Specificity: 0.7510548523206751
Threshold: 0.15
Accuracy:  0.7531048186785891

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.84it/s]
Loss: 0.4948414629825982
AUROC: 0.8269092237961531
AUPRC: 0.6484702903263092
Sensitivity: 0.7605363984674329
Specificity: 0.7442817932296432
Threshold: 0.14
Accuracy:  0.7485685415964971

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0022.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
Loss: 0.5262412028387189
AUROC: 0.8321803137070116
AUPRC: 0.6524946593639758
Sensitivity: 0.7495769881556683
Specificity: 0.7545710267229254
Threshold: 0.15
Accuracy:  0.7531048186785891

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.83it/s]
Loss: 0.4980291001578813
AUROC: 0.8267885791271286
AUPRC: 0.6481385197047572
Sensitivity: 0.7541507024265645
Specificity: 0.7483989021043
Threshold: 0.14
Accuracy:  0.7499157965644998

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0023.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.85it/s]
Loss: 0.5284166652709246
AUROC: 0.82935309530439
AUPRC: 0.6447960769187527
Sensitivity: 0.7614213197969543
Specificity: 0.7489451476793249
Threshold: 0.15
Accuracy:  0.7526080476900149

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.81it/s]
Loss: 0.49880321724440463
AUROC: 0.8244130038010373
AUPRC: 0.6422011586485983
Sensitivity: 0.7579821200510856
Specificity: 0.7415370539798719
Threshold: 0.14
Accuracy:  0.7458740316604917

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0024.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
Loss: 0.48632338363677263
AUROC: 0.8265127879276822
AUPRC: 0.6393652673059987
Sensitivity: 0.7411167512690355
Specificity: 0.760196905766526
Threshold: 0.22
Accuracy:  0.754595131644312

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.81it/s]
Loss: 0.46296785547528213
AUROC: 0.8214740792153481
AUPRC: 0.6353825018365354
Sensitivity: 0.7547892720306514
Specificity: 0.7429094236047575
Threshold: 0.2
Accuracy:  0.7460424385314921

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0025.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.86it/s]
Loss: 0.5218140380457044
AUROC: 0.8267924160104331
AUPRC: 0.6383338129438463
Sensitivity: 0.739424703891709
Specificity: 0.7580872011251758
Threshold: 0.16
Accuracy:  0.7526080476900149

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.83it/s]
Loss: 0.49521797478839913
AUROC: 0.8226007777345443
AUPRC: 0.6360087100755102
Sensitivity: 0.7420178799489144
Specificity: 0.7554894784995425
Threshold: 0.15
Accuracy:  0.7519366790165039

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0026.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.86it/s]
Loss: 0.5547667117789388
AUROC: 0.8291145190040005
AUPRC: 0.6437967179542794
Sensitivity: 0.7614213197969543
Specificity: 0.7489451476793249
Threshold: 0.12
Accuracy:  0.7526080476900149

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.84it/s]
Loss: 0.5209116527149754
AUROC: 0.8242536535178584
AUPRC: 0.6412873332067033
Sensitivity: 0.7458492975734355
Specificity: 0.7589204025617566
Threshold: 0.12
Accuracy:  0.755473223307511

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0027.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.80it/s]
Loss: 0.5910894796252251
AUROC: 0.8279680438647218
AUPRC: 0.6401939644566856
Sensitivity: 0.751269035532995
Specificity: 0.7559774964838256
Threshold: 0.1
Accuracy:  0.754595131644312

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.80it/s]
Loss: 0.5591990649700165
AUROC: 0.8224639205252514
AUPRC: 0.6373088786725897
Sensitivity: 0.756066411238825
Specificity: 0.7419945105215004
Threshold: 0.09
Accuracy:  0.7457056247894914

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0028.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.79it/s]
Loss: 0.5539526278153062
AUROC: 0.8253133619386912
AUPRC: 0.6378671315880979
Sensitivity: 0.7631133671742809
Specificity: 0.7426160337552743
Threshold: 0.12
Accuracy:  0.7486338797814208

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.81it/s]
Loss: 0.5225586165343562
AUROC: 0.8214832809273924
AUPRC: 0.638474022973321
Sensitivity: 0.7432950191570882
Specificity: 0.7554894784995425
Threshold: 0.12
Accuracy:  0.7522734927585045

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0029.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.87it/s]
Loss: 0.4969043703749776
AUROC: 0.8185285137350935
AUPRC: 0.6191079696339662
Sensitivity: 0.7428087986463621
Specificity: 0.7559774964838256
Threshold: 0.21
Accuracy:  0.7521112767014406

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.82it/s]
Loss: 0.4702286930173956
AUROC: 0.8137764819430278
AUPRC: 0.619503767879246
Sensitivity: 0.7337164750957854
Specificity: 0.7511436413540714
Threshold: 0.2
Accuracy:  0.7465476591444931

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0030.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.86it/s]
Loss: 0.5124079845845699
AUROC: 0.8121220558732606
AUPRC: 0.6105430357887567
Sensitivity: 0.7326565143824028
Specificity: 0.749648382559775
Threshold: 0.19
Accuracy:  0.7446597118728266

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.84it/s]
Loss: 0.48302504820849307
AUROC: 0.8099545581483936
AUPRC: 0.6125745879189325
Sensitivity: 0.7273307790549169
Specificity: 0.7472552607502287
Threshold: 0.18
Accuracy:  0.742000673627484

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0031.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
Loss: 0.5526748988777399
AUROC: 0.8220684862720461
AUPRC: 0.6318345199125622
Sensitivity: 0.7461928934010152
Specificity: 0.7587904360056259
Threshold: 0.13
Accuracy:  0.7550919026328863

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.84it/s]
Loss: 0.5186462527321231
AUROC: 0.8187129813663869
AUPRC: 0.6325214843525542
Sensitivity: 0.7426564495530013
Specificity: 0.7518298261665142
Threshold: 0.12
Accuracy:  0.7494105759514988

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0032.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.87it/s]
Loss: 0.5837114481255412
AUROC: 0.8140830221727222
AUPRC: 0.6166802699358889
Sensitivity: 0.7563451776649747
Specificity: 0.7355836849507735
Threshold: 0.11
Accuracy:  0.741679085941381

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.82it/s]
Loss: 0.5424115560067597
AUROC: 0.8119941249259481
AUPRC: 0.6174141266578104
Sensitivity: 0.7337164750957854
Specificity: 0.7463403476669717
Threshold: 0.11
Accuracy:  0.743011114853486

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0033.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
Loss: 0.5351852290332317
AUROC: 0.8100183007655859
AUPRC: 0.6061639639154812
Sensitivity: 0.7461928934010152
Specificity: 0.7327707454289732
Threshold: 0.15
Accuracy:  0.7367113760556383

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.82it/s]
Loss: 0.5032154180670297
AUROC: 0.8073349183647478
AUPRC: 0.6061612424721754
Sensitivity: 0.7477650063856961
Specificity: 0.7278133577310155
Threshold: 0.14
Accuracy:  0.7330751094644662

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0034.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
Loss: 0.5453459266573191
AUROC: 0.812589689220159
AUPRC: 0.6093606065528525
Sensitivity: 0.751269035532995
Specificity: 0.7320675105485233
Threshold: 0.14
Accuracy:  0.7377049180327869

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.83it/s]
Loss: 0.5101132463383419
AUROC: 0.8089073156824048
AUPRC: 0.6108761533049947
Sensitivity: 0.7273307790549169
Specificity: 0.7442817932296432
Threshold: 0.14
Accuracy:  0.7398113843044796

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0035.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.88it/s]
Loss: 0.5725211035460234
AUROC: 0.8114200108995457
AUPRC: 0.6137673631091198
Sensitivity: 0.7360406091370558
Specificity: 0.7383966244725738
Threshold: 0.12
Accuracy:  0.7377049180327869

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.82it/s]
Loss: 0.5318662955235409
AUROC: 0.8095866357255448
AUPRC: 0.6146449463527796
Sensitivity: 0.7490421455938697
Specificity: 0.7275846294602013
Threshold: 0.11
Accuracy:  0.7332435163354665

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0036.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
Loss: 0.5415012752637267
AUROC: 0.815313385736826
AUPRC: 0.6206647824156465
Sensitivity: 0.7326565143824028
Specificity: 0.750351617440225
Threshold: 0.14
Accuracy:  0.7451564828614009

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.83it/s]
Loss: 0.5110372876928698
AUROC: 0.8128413396991653
AUPRC: 0.6205741534754864
Sensitivity: 0.735632183908046
Specificity: 0.7470265324794144
Threshold: 0.13
Accuracy:  0.7440215560794881

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0037.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.86it/s]
Loss: 0.560489664785564
AUROC: 0.8124421407850053
AUPRC: 0.6142144179239033
Sensitivity: 0.7343485617597293
Specificity: 0.7461322081575246
Threshold: 0.13
Accuracy:  0.7426726279185295

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.80it/s]
Loss: 0.522264693052538
AUROC: 0.8096249031629351
AUPRC: 0.6144486736763491
Sensitivity: 0.7394636015325671
Specificity: 0.7419945105215004
Threshold: 0.12
Accuracy:  0.7413270461434827

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0038.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.85it/s]
Loss: 0.5422693705186248
AUROC: 0.812578980059543
AUPRC: 0.6156185508899142
Sensitivity: 0.7309644670050761
Specificity: 0.7440225035161744
Threshold: 0.14
Accuracy:  0.7401887729756582

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.82it/s]
Loss: 0.5093079923942525
AUROC: 0.8092946639417914
AUPRC: 0.6162299328227291
Sensitivity: 0.7388250319284803
Specificity: 0.7429094236047575
Threshold: 0.13
Accuracy:  0.7418322667564836

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0039.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.86it/s]
Loss: 0.5647511156275868
AUROC: 0.8077812761035791
AUPRC: 0.6100033350514789
Sensitivity: 0.7428087986463621
Specificity: 0.729957805907173
Threshold: 0.12
Accuracy:  0.7337307501241928

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.83it/s]
Loss: 0.5271725712283966
AUROC: 0.8058021030147731
AUPRC: 0.6113181186342782
Sensitivity: 0.7260536398467433
Specificity: 0.7442817932296432
Threshold: 0.12
Accuracy:  0.7394745705624789

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0040.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.85it/s]
Loss: 0.5209347233176231
AUROC: 0.8080275867977469
AUPRC: 0.60908798595238
Sensitivity: 0.7309644670050761
Specificity: 0.7383966244725738
Threshold: 0.17
Accuracy:  0.736214605067064

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.82it/s]
Loss: 0.4885669938659155
AUROC: 0.8050947396587361
AUPRC: 0.6099408541307183
Sensitivity: 0.7305236270753512
Specificity: 0.7378774016468436
Threshold: 0.16
Accuracy:  0.7359380262714719

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0041.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.85it/s]
Loss: 0.6112844301387668
AUROC: 0.8097351029626298
AUPRC: 0.6139499587165843
Sensitivity: 0.7326565143824028
Specificity: 0.7475386779184248
Threshold: 0.09
Accuracy:  0.7431693989071039

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.81it/s]
Loss: 0.5776096561583139
AUROC: 0.8057949461276276
AUPRC: 0.6116226531207264
Sensitivity: 0.731162196679438
Specificity: 0.734903934126258
Threshold: 0.08
Accuracy:  0.7339171438194678

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0042.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
Loss: 0.5484297377988696
AUROC: 0.7982132360465588
AUPRC: 0.595434161971674
Sensitivity: 0.7225042301184433
Specificity: 0.7306610407876231
Threshold: 0.15
Accuracy:  0.7282662692498758

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.83it/s]
Loss: 0.5094563717483193
AUROC: 0.7969782454000204
AUPRC: 0.5956008537861484
Sensitivity: 0.7292464878671775
Specificity: 0.7250686184812443
Threshold: 0.14
Accuracy:  0.7261704277534523

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0043.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.85it/s]
Loss: 0.5562691017985344
AUROC: 0.8057179778248981
AUPRC: 0.6059173557229527
Sensitivity: 0.7225042301184433
Specificity: 0.7461322081575246
Threshold: 0.13
Accuracy:  0.7391952309985097

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.82it/s]
Loss: 0.5217830513113288
AUROC: 0.8042405870867556
AUPRC: 0.6087064535525533
Sensitivity: 0.7324393358876118
Specificity: 0.7401646843549863
Threshold: 0.12
Accuracy:  0.7381273155944763

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0044.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.85it/s]
Loss: 0.531181407161057
AUROC: 0.7996649222633929
AUPRC: 0.6015960630870069
Sensitivity: 0.727580372250423
Specificity: 0.739803094233474
Threshold: 0.17
Accuracy:  0.736214605067064

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.83it/s]
Loss: 0.4928711474903168
AUROC: 0.8015752308607311
AUPRC: 0.6061988356281757
Sensitivity: 0.7318007662835249
Specificity: 0.7301006404391582
Threshold: 0.16
Accuracy:  0.7305490063994611


Plot AUROC/AUPRC for Each Intermediate Model
  Epoch with best Validation Loss:      24, 0.4821
  Epoch with best model Test AUROC:      4, 0.8365
  Epoch with best model Test Accuracy:   1, 0.7686

AUROC/AUPRC Plots - Best Model Based on Validation Loss
  Epoch with best Validation Loss:   24, 0.4821
  Best Model Based on Validation Loss:
    ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0024.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.83it/s]
Loss: 0.46296785547528213
AUROC: 0.8214740792153481
AUPRC: 0.6353825018365354
Sensitivity: 0.7547892720306514
Specificity: 0.7429094236047575
Threshold: 0.2
Accuracy:  0.7460424385314921
<Figure size 640x480 with 0 Axes>
best_model_val_test_auroc: 0.8214740792153481
best_model_val_test_auprc: 0.6353825018365354

AUROC/AUPRC Plots - Best Model Based on Model AUROC
  Epoch with best model Test AUROC:   4, 0.8365
  Best Model Based on Model AUROC:
    ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_d7cd59c3_0004.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.81it/s]
Loss: 0.6472530698263517
AUROC: 0.8365383042442385
AUPRC: 0.6866887677901886
Sensitivity: 0.7426564495530013
Specificity: 0.7779048490393413
Threshold: 0.06
Accuracy:  0.7686089592455372
best_model_auroc_test_auroc: 0.8365383042442385
best_model_auroc_test_auprc: 0.6866887677901886

Total Processing Time: 3682.9550 sec
In [110]:
RUN_ME = True

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=True, 
        useEeg=False, 
        useEcg=False,
        nResiduals=12, 
        skip_connection=False,
        batch_size=128,
        learning_rate=1e-4,
        weight_decay=0.0,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
Experiment Setup
  name:              ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f
  prediction_window: 003
  max_cases:         _ALL
  use_abp:           True
  use_eeg:           False
  use_ecg:           False
  n_residuals:       12
  skip_connection:   False
  batch_size:        128
  learning_rate:     0.0001
  weight_decay:      0.0
  balance_labels:    False
  max_epochs:        200
  patience:          20
  device:            mps

Model Architecture
HypotensionCNN(
  (abpResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
  )
  (abpFc): Linear(in_features=2814, out_features=32, bias=True)
  (fullLinear1): Linear(in_features=32, out_features=16, bias=True)
  (fullLinear2): Linear(in_features=16, out_features=1, bias=True)
  (sigmoid): Sigmoid()
)

Training Loop
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:50<00:00,  1.82it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
[2024-05-03 09:05:05.159323] Completed epoch 0 with training loss 0.49746197, validation loss 0.58578432
Validation loss improved to 0.58578432. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-03 09:05:57.538531] Completed epoch 1 with training loss 0.44051141, validation loss 0.59989780
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-03 09:06:50.145674] Completed epoch 2 with training loss 0.43296605, validation loss 0.58002710
Validation loss improved to 0.58002710. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  2.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-03 09:07:42.769573] Completed epoch 3 with training loss 0.42964223, validation loss 0.58797216
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-03 09:08:35.375799] Completed epoch 4 with training loss 0.42743734, validation loss 0.60506529
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-03 09:09:27.646534] Completed epoch 5 with training loss 0.42538685, validation loss 0.59065950
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-03 09:10:20.438036] Completed epoch 6 with training loss 0.42321947, validation loss 0.56045115
Validation loss improved to 0.56045115. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-03 09:11:13.296271] Completed epoch 7 with training loss 0.42232797, validation loss 0.55178010
Validation loss improved to 0.55178010. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  2.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
[2024-05-03 09:12:06.219746] Completed epoch 8 with training loss 0.42303574, validation loss 0.56764483
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-03 09:12:58.541975] Completed epoch 9 with training loss 0.42013094, validation loss 0.53483760
Validation loss improved to 0.53483760. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-03 09:13:50.881050] Completed epoch 10 with training loss 0.42109615, validation loss 0.53845978
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-03 09:14:43.885621] Completed epoch 11 with training loss 0.41751119, validation loss 0.53917581
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-03 09:15:36.210553] Completed epoch 12 with training loss 0.41509885, validation loss 0.53094596
Validation loss improved to 0.53094596. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-03 09:16:28.686327] Completed epoch 13 with training loss 0.41392931, validation loss 0.50418097
Validation loss improved to 0.50418097. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  2.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-03 09:17:21.209645] Completed epoch 14 with training loss 0.41515085, validation loss 0.50074017
Validation loss improved to 0.50074017. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-03 09:18:13.875893] Completed epoch 15 with training loss 0.41258559, validation loss 0.51940966
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-03 09:19:06.052208] Completed epoch 16 with training loss 0.41215131, validation loss 0.51548088
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-03 09:19:58.395275] Completed epoch 17 with training loss 0.41182467, validation loss 0.53706372
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  2.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-03 09:20:50.887583] Completed epoch 18 with training loss 0.40829501, validation loss 0.55230439
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-03 09:21:43.261359] Completed epoch 19 with training loss 0.41028571, validation loss 0.54638922
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  2.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-03 09:22:35.751105] Completed epoch 20 with training loss 0.40774247, validation loss 0.51787329
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  2.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-03 09:23:28.215790] Completed epoch 21 with training loss 0.40710983, validation loss 0.53975910
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-03 09:24:20.862476] Completed epoch 22 with training loss 0.40380740, validation loss 0.50550818
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-03 09:25:13.152578] Completed epoch 23 with training loss 0.40766570, validation loss 0.49804634
Validation loss improved to 0.49804634. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  2.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
[2024-05-03 09:26:05.926829] Completed epoch 24 with training loss 0.40351465, validation loss 0.49500769
Validation loss improved to 0.49500769. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-03 09:26:58.360507] Completed epoch 25 with training loss 0.40379757, validation loss 0.51694882
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-03 09:27:50.606949] Completed epoch 26 with training loss 0.40185589, validation loss 0.48761255
Validation loss improved to 0.48761255. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  2.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-03 09:28:43.198946] Completed epoch 27 with training loss 0.40258801, validation loss 0.55455995
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-03 09:29:36.308837] Completed epoch 28 with training loss 0.40171400, validation loss 0.57148874
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
[2024-05-03 09:30:31.130299] Completed epoch 29 with training loss 0.40087527, validation loss 0.50888473
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
[2024-05-03 09:31:24.991659] Completed epoch 30 with training loss 0.39874828, validation loss 0.51111150
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
[2024-05-03 09:32:18.857688] Completed epoch 31 with training loss 0.39724296, validation loss 0.53310293
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
[2024-05-03 09:33:12.380085] Completed epoch 32 with training loss 0.39885882, validation loss 0.50728947
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
[2024-05-03 09:34:06.691996] Completed epoch 33 with training loss 0.39423245, validation loss 0.51528364
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
[2024-05-03 09:35:01.144015] Completed epoch 34 with training loss 0.39266345, validation loss 0.51009500
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
[2024-05-03 09:35:55.011612] Completed epoch 35 with training loss 0.39326456, validation loss 0.52535594
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
[2024-05-03 09:36:47.019550] Completed epoch 36 with training loss 0.39330119, validation loss 0.47943169
Validation loss improved to 0.47943169. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
[2024-05-03 09:37:40.373098] Completed epoch 37 with training loss 0.39379451, validation loss 0.52573419
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
[2024-05-03 09:38:33.667188] Completed epoch 38 with training loss 0.39102608, validation loss 0.49182898
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
[2024-05-03 09:39:26.414756] Completed epoch 39 with training loss 0.38962567, validation loss 0.50889206
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
[2024-05-03 09:40:20.163193] Completed epoch 40 with training loss 0.38860744, validation loss 0.50839961
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-03 09:41:12.375067] Completed epoch 41 with training loss 0.38765660, validation loss 0.52389097
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.03it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-03 09:42:04.222286] Completed epoch 42 with training loss 0.38910168, validation loss 0.51820892
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
[2024-05-03 09:42:56.417000] Completed epoch 43 with training loss 0.38841757, validation loss 0.55578816
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-03 09:43:48.379554] Completed epoch 44 with training loss 0.38620874, validation loss 0.52311701
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-03 09:44:40.600304] Completed epoch 45 with training loss 0.38550612, validation loss 0.52732587
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-03 09:45:32.820526] Completed epoch 46 with training loss 0.38063210, validation loss 0.52577800
No improvement in validation loss. 10 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
[2024-05-03 09:46:25.983937] Completed epoch 47 with training loss 0.38129035, validation loss 0.50291324
No improvement in validation loss. 11 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
[2024-05-03 09:47:19.183088] Completed epoch 48 with training loss 0.38349840, validation loss 0.52869928
No improvement in validation loss. 12 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  2.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-03 09:48:11.712566] Completed epoch 49 with training loss 0.37941781, validation loss 0.51841593
No improvement in validation loss. 13 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-03 09:49:04.683717] Completed epoch 50 with training loss 0.37899661, validation loss 0.52904582
No improvement in validation loss. 14 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  2.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-03 09:49:57.141711] Completed epoch 51 with training loss 0.38220513, validation loss 0.57547402
No improvement in validation loss. 15 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
[2024-05-03 09:50:49.344889] Completed epoch 52 with training loss 0.37822396, validation loss 0.49590153
No improvement in validation loss. 16 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-03 09:51:41.910063] Completed epoch 53 with training loss 0.37680310, validation loss 0.53850180
No improvement in validation loss. 17 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
[2024-05-03 09:52:35.296120] Completed epoch 54 with training loss 0.37610149, validation loss 0.53905106
No improvement in validation loss. 18 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
[2024-05-03 09:53:28.123399] Completed epoch 55 with training loss 0.37653333, validation loss 0.56094909
No improvement in validation loss. 19 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-03 09:54:21.170106] Completed epoch 56 with training loss 0.37201819, validation loss 0.54722226
No improvement in validation loss. 20 epochs without improvement.
Early stopping due to no improvement in validation loss.

Plot Validation and Loss Values from Training
  Epoch with best Validation Loss:   36, 0.4794
Generate AUROC/AUPRC for Each Intermediate Model

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0000.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:05<00:00,  2.73it/s]
Loss: 0.5844884533435106
AUROC: 0.8407416926661287
AUPRC: 0.6856547445842216
Sensitivity: 0.7868020304568528
Specificity: 0.750351617440225
Threshold: 0.14
Accuracy:  0.7610531544957775

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.547483688022228
AUROC: 0.8266106793609397
AUPRC: 0.663351615166669
Sensitivity: 0.7426564495530013
Specificity: 0.7664684354986276
Threshold: 0.14
Accuracy:  0.7601886156955204

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0001.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
Loss: 0.6026981975883245
AUROC: 0.8427454956080542
AUPRC: 0.6956605829004787
Sensitivity: 0.7478849407783418
Specificity: 0.7805907172995781
Threshold: 0.12
Accuracy:  0.7709885742672627

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.45it/s]
Loss: 0.5617118579276065
AUROC: 0.8315241014747278
AUPRC: 0.677335739898551
Sensitivity: 0.7669220945083014
Specificity: 0.7465690759377859
Threshold: 0.11
Accuracy:  0.7519366790165039

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0002.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
Loss: 0.5776664204895496
AUROC: 0.8434939469444385
AUPRC: 0.7003006950018
Sensitivity: 0.7800338409475466
Specificity: 0.760196905766526
Threshold: 0.12
Accuracy:  0.7660208643815202

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.51it/s]
Loss: 0.5424456044714502
AUROC: 0.8333420968686136
AUPRC: 0.6806398987462408
Sensitivity: 0.7490421455938697
Specificity: 0.7669258920402562
Threshold: 0.12
Accuracy:  0.7622094981475244

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0003.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
Loss: 0.5845901593565941
AUROC: 0.8443958962496521
AUPRC: 0.7016798681826544
Sensitivity: 0.7766497461928934
Specificity: 0.7587904360056259
Threshold: 0.11
Accuracy:  0.764033780427223

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.50it/s]
Loss: 0.5484868240483264
AUROC: 0.8353224367535659
AUPRC: 0.683666245167719
Sensitivity: 0.7496807151979565
Specificity: 0.7669258920402562
Threshold: 0.11
Accuracy:  0.7623779050185248

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0004.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
Loss: 0.6068877335637808
AUROC: 0.8438651978457928
AUPRC: 0.7032555734537437
Sensitivity: 0.7495769881556683
Specificity: 0.7756680731364276
Threshold: 0.1
Accuracy:  0.7680079483358172

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.42it/s]
Loss: 0.56725660188401
AUROC: 0.8352898656141076
AUPRC: 0.6844630445774087
Sensitivity: 0.7592592592592593
Specificity: 0.7568618481244281
Threshold: 0.09
Accuracy:  0.757494105759515

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0005.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
Loss: 0.5891754254698753
AUROC: 0.8446148390889121
AUPRC: 0.7028135312985284
Sensitivity: 0.7766497461928934
Specificity: 0.7552742616033755
Threshold: 0.1
Accuracy:  0.7615499254843517

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.36it/s]
Loss: 0.5520139701188879
AUROC: 0.8363903465569238
AUPRC: 0.6840826971532205
Sensitivity: 0.7535121328224776
Specificity: 0.7653247941445562
Threshold: 0.1
Accuracy:  0.7622094981475244

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0006.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.30it/s]
Loss: 0.5581125747412443
AUROC: 0.8431048474420575
AUPRC: 0.7004177608034464
Sensitivity: 0.7698815566835872
Specificity: 0.7630098452883263
Threshold: 0.12
Accuracy:  0.7650273224043715

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.528102955285539
AUROC: 0.8347155619354093
AUPRC: 0.6822764917542599
Sensitivity: 0.7509578544061303
Specificity: 0.7689844464775847
Threshold: 0.12
Accuracy:  0.7642303805995284

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0007.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.28it/s]
Loss: 0.5526761393994093
AUROC: 0.8433892351517487
AUPRC: 0.698711435504762
Sensitivity: 0.766497461928934
Specificity: 0.7665260196905767
Threshold: 0.13
Accuracy:  0.7665176353700944

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.31it/s]
Loss: 0.5189859324947317
AUROC: 0.8352132577098662
AUPRC: 0.6816387642990932
Sensitivity: 0.7509578544061303
Specificity: 0.7735590118938701
Threshold: 0.13
Accuracy:  0.7675985180195352

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0008.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.22it/s]
Loss: 0.5666617788374424
AUROC: 0.8435427331205779
AUPRC: 0.6984967016746737
Sensitivity: 0.7631133671742809
Specificity: 0.7665260196905767
Threshold: 0.12
Accuracy:  0.7655240933929458

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.5324779095801901
AUROC: 0.8359607872692707
AUPRC: 0.6816941828864906
Sensitivity: 0.7477650063856961
Specificity: 0.776075022872827
Threshold: 0.12
Accuracy:  0.7686089592455372

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0009.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
Loss: 0.5332057531923056
AUROC: 0.843001325556103
AUPRC: 0.6953043422117704
Sensitivity: 0.7563451776649747
Specificity: 0.770745428973277
Threshold: 0.15
Accuracy:  0.7665176353700944

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.5050767187742476
AUROC: 0.8348860857260706
AUPRC: 0.6776452524266217
Sensitivity: 0.7611749680715197
Specificity: 0.7589204025617566
Threshold: 0.14
Accuracy:  0.7595149882115191

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0010.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
Loss: 0.5409606453031301
AUROC: 0.8422445448725729
AUPRC: 0.6959128540895225
Sensitivity: 0.7648054145516074
Specificity: 0.760196905766526
Threshold: 0.14
Accuracy:  0.7615499254843517

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.46it/s]
Loss: 0.5100886301791414
AUROC: 0.8345789238144982
AUPRC: 0.6783636649181465
Sensitivity: 0.7528735632183908
Specificity: 0.7680695333943275
Threshold: 0.14
Accuracy:  0.7640619737285281

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0011.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 0.5413438528776169
AUROC: 0.8426895699915041
AUPRC: 0.6943817980524689
Sensitivity: 0.7631133671742809
Specificity: 0.7637130801687764
Threshold: 0.14
Accuracy:  0.7635370094386488

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.5113376515342835
AUROC: 0.8348312406011084
AUPRC: 0.6772470874861094
Sensitivity: 0.7694763729246488
Specificity: 0.7506861848124429
Threshold: 0.13
Accuracy:  0.7556416301785113

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0012.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
Loss: 0.5345283765345812
AUROC: 0.8426955195251797
AUPRC: 0.6921867418687404
Sensitivity: 0.7563451776649747
Specificity: 0.7679324894514767
Threshold: 0.15
Accuracy:  0.7645305514157973

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.504353052758156
AUROC: 0.8347232300287794
AUPRC: 0.674608637726655
Sensitivity: 0.7637292464878672
Specificity: 0.7580054894784996
Threshold: 0.14
Accuracy:  0.7595149882115191

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0013.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
Loss: 0.5074349083006382
AUROC: 0.8417757216189395
AUPRC: 0.6887937561957163
Sensitivity: 0.7749576988155669
Specificity: 0.7545710267229254
Threshold: 0.18
Accuracy:  0.7605563835072032

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.46it/s]
Loss: 0.4811107766755084
AUROC: 0.8337288608923148
AUPRC: 0.6715533750539376
Sensitivity: 0.7515964240102171
Specificity: 0.7694419030192132
Threshold: 0.18
Accuracy:  0.7647356012125295

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0014.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
Loss: 0.5026642382144928
AUROC: 0.841684098800336
AUPRC: 0.685281683126999
Sensitivity: 0.7681895093062606
Specificity: 0.7609001406469761
Threshold: 0.19
Accuracy:  0.7630402384500745

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.41it/s]
Loss: 0.47590622718029835
AUROC: 0.8333894199591269
AUPRC: 0.668399177883002
Sensitivity: 0.7656449553001277
Specificity: 0.7511436413540714
Threshold: 0.18
Accuracy:  0.7549680026945099

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0015.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 0.5247977320104837
AUROC: 0.8420125130592264
AUPRC: 0.6867119978421803
Sensitivity: 0.751269035532995
Specificity: 0.7756680731364276
Threshold: 0.16
Accuracy:  0.7685047193243915

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.27it/s]
Loss: 0.49624123345030113
AUROC: 0.8338866775568197
AUPRC: 0.6703117790001478
Sensitivity: 0.7567049808429118
Specificity: 0.762580054894785
Threshold: 0.15
Accuracy:  0.7610306500505221

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0016.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.19it/s]
Loss: 0.5146767664700747
AUROC: 0.8417566831111778
AUPRC: 0.6853648376021312
Sensitivity: 0.7648054145516074
Specificity: 0.7651195499296765
Threshold: 0.17
Accuracy:  0.7650273224043715

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.4886229675500951
AUROC: 0.8337545672624702
AUPRC: 0.6681605931874409
Sensitivity: 0.7675606641123882
Specificity: 0.7541171088746569
Threshold: 0.16
Accuracy:  0.7576625126305153

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0017.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
Loss: 0.5374794639647007
AUROC: 0.8419649167898221
AUPRC: 0.6848344754276532
Sensitivity: 0.7732656514382402
Specificity: 0.7573839662447257
Threshold: 0.14
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.5088038384280307
AUROC: 0.8343203995237312
AUPRC: 0.6686881491540428
Sensitivity: 0.7496807151979565
Specificity: 0.7698993595608418
Threshold: 0.14
Accuracy:  0.7645671943415291

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0018.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
Loss: 0.5511354394257069
AUROC: 0.8415484494325336
AUPRC: 0.6844091041128664
Sensitivity: 0.7648054145516074
Specificity: 0.7644163150492265
Threshold: 0.13
Accuracy:  0.7645305514157973

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.520881693730963
AUROC: 0.8341321295741272
AUPRC: 0.6682740807144795
Sensitivity: 0.768837803320562
Specificity: 0.7502287282708143
Threshold: 0.12
Accuracy:  0.7551364095655103

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0019.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
Loss: 0.548192435875535
AUROC: 0.8410641573913438
AUPRC: 0.6787873321191162
Sensitivity: 0.7614213197969543
Specificity: 0.7679324894514767
Threshold: 0.14
Accuracy:  0.7660208643815202

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.45it/s]
Loss: 0.5164314771586276
AUROC: 0.8337796893969402
AUPRC: 0.6636893116190863
Sensitivity: 0.7624521072796935
Specificity: 0.757548032936871
Threshold: 0.13
Accuracy:  0.7588413607275177

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0020.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.31it/s]
Loss: 0.5185114908963442
AUROC: 0.8398397433609154
AUPRC: 0.6787328961696993
Sensitivity: 0.7715736040609137
Specificity: 0.7573839662447257
Threshold: 0.16
Accuracy:  0.7615499254843517

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.491044098392446
AUROC: 0.8328147511331252
AUPRC: 0.6646488991651832
Sensitivity: 0.7496807151979565
Specificity: 0.7708142726440989
Threshold: 0.16
Accuracy:  0.7652408218255304

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0021.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.30it/s]
Loss: 0.5396554414182901
AUROC: 0.8398480727080612
AUPRC: 0.6782158768271994
Sensitivity: 0.7631133671742809
Specificity: 0.7630098452883263
Threshold: 0.14
Accuracy:  0.7630402384500745

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.36it/s]
Loss: 0.50911290594872
AUROC: 0.8335842625601908
AUPRC: 0.6652468663502525
Sensitivity: 0.7656449553001277
Specificity: 0.7591491308325709
Threshold: 0.13
Accuracy:  0.7608622431795218

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0022.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
Loss: 0.5046041551977396
AUROC: 0.8391841047498697
AUPRC: 0.6728690271189098
Sensitivity: 0.754653130287648
Specificity: 0.770745428973277
Threshold: 0.18
Accuracy:  0.7660208643815202

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.4785928399638927
AUROC: 0.831852441929894
AUPRC: 0.6601556901304185
Sensitivity: 0.7567049808429118
Specificity: 0.7648673376029277
Threshold: 0.17
Accuracy:  0.7627147187605254

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0023.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
Loss: 0.4982922989875078
AUROC: 0.8366805409791981
AUPRC: 0.6641694806495194
Sensitivity: 0.754653130287648
Specificity: 0.770745428973277
Threshold: 0.2
Accuracy:  0.7660208643815202

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.45it/s]
Loss: 0.471764825443004
AUROC: 0.8299766072031586
AUPRC: 0.6536798383205785
Sensitivity: 0.7503192848020435
Specificity: 0.7614364135407137
Threshold: 0.19
Accuracy:  0.7585045469855171

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0024.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
Loss: 0.49768189154565334
AUROC: 0.8374194730617014
AUPRC: 0.6693562318850973
Sensitivity: 0.7631133671742809
Specificity: 0.7651195499296765
Threshold: 0.19
Accuracy:  0.7645305514157973

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.46it/s]
Loss: 0.4699876007247478
AUROC: 0.8311687401191141
AUPRC: 0.6589105904085764
Sensitivity: 0.7573435504469987
Specificity: 0.7580054894784996
Threshold: 0.18
Accuracy:  0.7578309195015157

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0025.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
Loss: 0.5155682563781738
AUROC: 0.8365341824507795
AUPRC: 0.663051030670492
Sensitivity: 0.7698815566835872
Specificity: 0.7538677918424754
Threshold: 0.16
Accuracy:  0.7585692995529061

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.4873786879346726
AUROC: 0.8310914749497265
AUPRC: 0.6556620964273215
Sensitivity: 0.768837803320562
Specificity: 0.7493138151875571
Threshold: 0.15
Accuracy:  0.754462782081509

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0026.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 0.4863808937370777
AUROC: 0.8332774077167832
AUPRC: 0.6548194501998199
Sensitivity: 0.7614213197969543
Specificity: 0.7693389592123769
Threshold: 0.22
Accuracy:  0.7670144063586687

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.37it/s]
Loss: 0.46136824976890645
AUROC: 0.8276644944783886
AUPRC: 0.6483501562955306
Sensitivity: 0.7458492975734355
Specificity: 0.7628087831655993
Threshold: 0.21
Accuracy:  0.7583361401145167

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0027.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
Loss: 0.5552405379712582
AUROC: 0.8369911066370619
AUPRC: 0.6647724837331282
Sensitivity: 0.7715736040609137
Specificity: 0.759493670886076
Threshold: 0.12
Accuracy:  0.7630402384500745

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.5244806488143637
AUROC: 0.8309924470010598
AUPRC: 0.6583508146510622
Sensitivity: 0.7694763729246488
Specificity: 0.7483989021043
Threshold: 0.11
Accuracy:  0.7539575614685079

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0028.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 0.5729922130703926
AUROC: 0.8362985809172276
AUPRC: 0.6655382811509045
Sensitivity: 0.7580372250423012
Specificity: 0.7616033755274262
Threshold: 0.11
Accuracy:  0.7605563835072032

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.540379173261054
AUROC: 0.8305628877134067
AUPRC: 0.6593084899369062
Sensitivity: 0.7624521072796935
Specificity: 0.755032021957914
Threshold: 0.1
Accuracy:  0.756988885146514

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0029.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
Loss: 0.5067795552313328
AUROC: 0.8314616100390051
AUPRC: 0.6503065350673922
Sensitivity: 0.7597292724196277
Specificity: 0.7644163150492265
Threshold: 0.18
Accuracy:  0.7630402384500745

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.47921633054601387
AUROC: 0.8264923716346564
AUPRC: 0.6451208059842194
Sensitivity: 0.7541507024265645
Specificity: 0.7566331198536139
Threshold: 0.17
Accuracy:  0.7559784439205119

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0030.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.35it/s]
Loss: 0.5110019221901894
AUROC: 0.8289889838434464
AUPRC: 0.6420844753560413
Sensitivity: 0.7563451776649747
Specificity: 0.7651195499296765
Threshold: 0.18
Accuracy:  0.7625434674615003

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.48154424321144185
AUROC: 0.8246186547622804
AUPRC: 0.6381909718894105
Sensitivity: 0.7477650063856961
Specificity: 0.7577767612076852
Threshold: 0.17
Accuracy:  0.7551364095655103

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0031.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
Loss: 0.5309191793203354
AUROC: 0.8319982579765397
AUPRC: 0.6504454199214442
Sensitivity: 0.7495769881556683
Specificity: 0.770042194092827
Threshold: 0.15
Accuracy:  0.764033780427223

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.5014898821394494
AUROC: 0.8264733839748826
AUPRC: 0.6445340142546195
Sensitivity: 0.743933588761175
Specificity: 0.7637236962488564
Threshold: 0.14
Accuracy:  0.7585045469855171

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0032.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
Loss: 0.5058295447379351
AUROC: 0.8282464820407377
AUPRC: 0.6443732842730723
Sensitivity: 0.7648054145516074
Specificity: 0.7552742616033755
Threshold: 0.18
Accuracy:  0.7580725285643318

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.37it/s]
Loss: 0.4770057851329763
AUROC: 0.8233725530748908
AUPRC: 0.6377695187199334
Sensitivity: 0.7522349936143039
Specificity: 0.7445105215004575
Threshold: 0.17
Accuracy:  0.7465476591444931

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0033.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 0.5130566693842411
AUROC: 0.8280245644346396
AUPRC: 0.6401810260255714
Sensitivity: 0.7563451776649747
Specificity: 0.7609001406469761
Threshold: 0.17
Accuracy:  0.7595628415300546

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.48455101790580346
AUROC: 0.8229488361440911
AUPRC: 0.6355311025335925
Sensitivity: 0.743933588761175
Specificity: 0.7545745654162854
Threshold: 0.16
Accuracy:  0.7517682721455036

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0034.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
Loss: 0.510272242128849
AUROC: 0.8247124590374606
AUPRC: 0.6351513287058802
Sensitivity: 0.751269035532995
Specificity: 0.759493670886076
Threshold: 0.18
Accuracy:  0.7570789865871833

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.48032976401613114
AUROC: 0.8201585265108627
AUPRC: 0.6299689057125466
Sensitivity: 0.7413793103448276
Specificity: 0.752516010978957
Threshold: 0.17
Accuracy:  0.7495789828224991

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0035.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
Loss: 0.5249875709414482
AUROC: 0.8234107010692503
AUPRC: 0.6343530743931253
Sensitivity: 0.751269035532995
Specificity: 0.7538677918424754
Threshold: 0.16
Accuracy:  0.7531048186785891

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.42it/s]
Loss: 0.4921406276048498
AUROC: 0.8200730820418805
AUPRC: 0.628011933768558
Sensitivity: 0.7522349936143039
Specificity: 0.742451967063129
Threshold: 0.15
Accuracy:  0.7450319973054901

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0036.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
Loss: 0.4823212902992964
AUROC: 0.8235273119292909
AUPRC: 0.6324159832514413
Sensitivity: 0.7529610829103215
Specificity: 0.759493670886076
Threshold: 0.24
Accuracy:  0.7575757575757576

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 0.4549497254985444
AUROC: 0.8186236663359892
AUPRC: 0.6271802520040111
Sensitivity: 0.7490421455938697
Specificity: 0.7385635864592863
Threshold: 0.22
Accuracy:  0.7413270461434827

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0037.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 0.5216603744775057
AUROC: 0.8248147910166802
AUPRC: 0.6352776459705958
Sensitivity: 0.7580372250423012
Specificity: 0.7566807313642757
Threshold: 0.16
Accuracy:  0.7570789865871833

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.49it/s]
Loss: 0.4921539780941415
AUROC: 0.8192624550284582
AUPRC: 0.6283271880362722
Sensitivity: 0.7445721583652618
Specificity: 0.7472552607502287
Threshold: 0.15
Accuracy:  0.7465476591444931

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0038.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
Loss: 0.4911631364375353
AUROC: 0.8208286034540612
AUPRC: 0.6260090098648544
Sensitivity: 0.7478849407783418
Specificity: 0.7609001406469761
Threshold: 0.22
Accuracy:  0.7570789865871833

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.463998869695562
AUROC: 0.8153772146914243
AUPRC: 0.6193780593494433
Sensitivity: 0.7464878671775224
Specificity: 0.739935956084172
Threshold: 0.2
Accuracy:  0.7416638598854833

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0039.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
Loss: 0.508413527160883
AUROC: 0.8237236465405842
AUPRC: 0.6332320038109759
Sensitivity: 0.7529610829103215
Specificity: 0.7637130801687764
Threshold: 0.18
Accuracy:  0.7605563835072032

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.37it/s]
Loss: 0.4803660645129833
AUROC: 0.8181351722735766
AUPRC: 0.6266213879177686
Sensitivity: 0.756066411238825
Specificity: 0.7378774016468436
Threshold: 0.16
Accuracy:  0.7426743011114854

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0040.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
Loss: 0.5097822491079569
AUROC: 0.8234571074319195
AUPRC: 0.635711498477098
Sensitivity: 0.7597292724196277
Specificity: 0.7440225035161744
Threshold: 0.17
Accuracy:  0.7486338797814208

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.48035110057668484
AUROC: 0.817582485315236
AUPRC: 0.627571971571762
Sensitivity: 0.7541507024265645
Specificity: 0.7417657822506862
Threshold: 0.16
Accuracy:  0.7450319973054901

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0041.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
Loss: 0.5229324083775282
AUROC: 0.8219673441995615
AUPRC: 0.6290174433799963
Sensitivity: 0.7461928934010152
Specificity: 0.7566807313642757
Threshold: 0.16
Accuracy:  0.7536015896671634

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.49285699173491054
AUROC: 0.8158525634509166
AUPRC: 0.621622422341611
Sensitivity: 0.7420178799489144
Specificity: 0.7502287282708143
Threshold: 0.15
Accuracy:  0.7480633209834961

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0042.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
Loss: 0.5198479909449816
AUROC: 0.8193578787294651
AUPRC: 0.6273879254606383
Sensitivity: 0.7360406091370558
Specificity: 0.7587904360056259
Threshold: 0.17
Accuracy:  0.7521112767014406

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.4893887011294669
AUROC: 0.8144175345487773
AUPRC: 0.6201865397602173
Sensitivity: 0.7528735632183908
Specificity: 0.7353613906678865
Threshold: 0.15
Accuracy:  0.73997979117548

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0043.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
Loss: 0.5538465343415737
AUROC: 0.8221375008626824
AUPRC: 0.6319981504800394
Sensitivity: 0.7377326565143824
Specificity: 0.760196905766526
Threshold: 0.13
Accuracy:  0.7536015896671634

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.517737736093237
AUROC: 0.8172407804687675
AUPRC: 0.6256708369264159
Sensitivity: 0.7471264367816092
Specificity: 0.7495425434583715
Threshold: 0.12
Accuracy:  0.7489053553384978

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0044.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
Loss: 0.5246996637433767
AUROC: 0.8198124231022772
AUPRC: 0.6282268695669168
Sensitivity: 0.7478849407783418
Specificity: 0.7552742616033755
Threshold: 0.16
Accuracy:  0.7531048186785891

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.4911364177440075
AUROC: 0.8155284587044692
AUPRC: 0.6234412705163416
Sensitivity: 0.743933588761175
Specificity: 0.7522872827081427
Threshold: 0.15
Accuracy:  0.7500842034355002

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0045.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
Loss: 0.525771539658308
AUROC: 0.8139604617790057
AUPRC: 0.615934496125994
Sensitivity: 0.739424703891709
Specificity: 0.7468354430379747
Threshold: 0.17
Accuracy:  0.7446597118728266

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.49172996079668085
AUROC: 0.8093231454314523
AUPRC: 0.6102812311695665
Sensitivity: 0.7318007662835249
Specificity: 0.75
Threshold: 0.16
Accuracy:  0.7452004041764904

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0046.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
Loss: 0.5251577850431204
AUROC: 0.8210380270394406
AUPRC: 0.6292512500695879
Sensitivity: 0.7597292724196277
Specificity: 0.7447257383966245
Threshold: 0.15
Accuracy:  0.7491306507699951

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.41it/s]
Loss: 0.49262457293398837
AUROC: 0.816816990508507
AUPRC: 0.6267049062164513
Sensitivity: 0.7452107279693486
Specificity: 0.7454254345837146
Threshold: 0.14
Accuracy:  0.7453688110474908

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0047.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
Loss: 0.5047169905155897
AUROC: 0.8160285196846272
AUPRC: 0.6201538290831059
Sensitivity: 0.7563451776649747
Specificity: 0.7440225035161744
Threshold: 0.19
Accuracy:  0.7476403378042722

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.4736582297593989
AUROC: 0.8116200680284031
AUPRC: 0.6152864204886139
Sensitivity: 0.7349936143039592
Specificity: 0.7486276303751144
Threshold: 0.18
Accuracy:  0.7450319973054901

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0048.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
Loss: 0.5266085267066956
AUROC: 0.8127181991475508
AUPRC: 0.6136615395575606
Sensitivity: 0.7563451776649747
Specificity: 0.7369901547116737
Threshold: 0.16
Accuracy:  0.7426726279185295

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 0.4939228391393702
AUROC: 0.8082220802529507
AUPRC: 0.6098152249174061
Sensitivity: 0.7401021711366539
Specificity: 0.734903934126258
Threshold: 0.15
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0049.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
Loss: 0.5177185460925102
AUROC: 0.8100313897396723
AUPRC: 0.6114240505284655
Sensitivity: 0.7343485617597293
Specificity: 0.7447257383966245
Threshold: 0.18
Accuracy:  0.741679085941381

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.36it/s]
Loss: 0.48414507096118115
AUROC: 0.8062280108293928
AUPRC: 0.6069150928838004
Sensitivity: 0.7484035759897829
Specificity: 0.7287282708142726
Threshold: 0.16
Accuracy:  0.7339171438194678

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0050.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.28it/s]
Loss: 0.5279721263796091
AUROC: 0.813369078131656
AUPRC: 0.6173191374379265
Sensitivity: 0.7360406091370558
Specificity: 0.7559774964838256
Threshold: 0.16
Accuracy:  0.7501241927471436

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.32it/s]
Loss: 0.49345116761136565
AUROC: 0.810360017714026
AUPRC: 0.616443255041523
Sensitivity: 0.7509578544061303
Specificity: 0.7326166514181153
Threshold: 0.14
Accuracy:  0.737453688110475

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0051.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.30it/s]
Loss: 0.5753844808787107
AUROC: 0.8181263252586264
AUPRC: 0.6246374544601077
Sensitivity: 0.7411167512690355
Specificity: 0.7468354430379747
Threshold: 0.11
Accuracy:  0.7451564828614009

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.31it/s]
Loss: 0.5361359233551837
AUROC: 0.8138752908033124
AUPRC: 0.6233823912699968
Sensitivity: 0.7509578544061303
Specificity: 0.7387923147301007
Threshold: 0.1
Accuracy:  0.742000673627484

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0052.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.32it/s]
Loss: 0.4975237809121609
AUROC: 0.8148992981930078
AUPRC: 0.617139356745126
Sensitivity: 0.7478849407783418
Specificity: 0.7369901547116737
Threshold: 0.2
Accuracy:  0.7401887729756582

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.35it/s]
Loss: 0.46585126474816746
AUROC: 0.8105693201483024
AUPRC: 0.6154804506499455
Sensitivity: 0.7394636015325671
Specificity: 0.739935956084172
Threshold: 0.19
Accuracy:  0.7398113843044796

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0053.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.39it/s]
Loss: 0.5383100043982267
AUROC: 0.8110154426096082
AUPRC: 0.6103997278646557
Sensitivity: 0.7495769881556683
Specificity: 0.7327707454289732
Threshold: 0.14
Accuracy:  0.7377049180327869

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.37it/s]
Loss: 0.5015347162459759
AUROC: 0.807814210715116
AUPRC: 0.6104204047492027
Sensitivity: 0.7298850574712644
Specificity: 0.7479414455626715
Threshold: 0.14
Accuracy:  0.7431795217244863

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0054.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
Loss: 0.5417426954954863
AUROC: 0.8119054928474706
AUPRC: 0.6124495174957656
Sensitivity: 0.7360406091370558
Specificity: 0.7390998593530239
Threshold: 0.14
Accuracy:  0.7382016890213612

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.41it/s]
Loss: 0.5039533281579931
AUROC: 0.8084621280901686
AUPRC: 0.6128044277213387
Sensitivity: 0.7388250319284803
Specificity: 0.7367337602927722
Threshold: 0.13
Accuracy:  0.7372852812394746

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0055.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
Loss: 0.5588219910860062
AUROC: 0.8100266301127318
AUPRC: 0.6130204488232172
Sensitivity: 0.7461928934010152
Specificity: 0.729957805907173
Threshold: 0.12
Accuracy:  0.7347242921013413

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.47it/s]
Loss: 0.5190516218860098
AUROC: 0.808243623943848
AUPRC: 0.6150598667080314
Sensitivity: 0.7292464878671775
Specificity: 0.744967978042086
Threshold: 0.12
Accuracy:  0.7408218255304816

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0056.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
Loss: 0.5455006435513496
AUROC: 0.8035237898053551
AUPRC: 0.6007105180852738
Sensitivity: 0.7478849407783418
Specificity: 0.7285513361462729
Threshold: 0.14
Accuracy:  0.734227521112767

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.39it/s]
Loss: 0.5068324683828557
AUROC: 0.8018298845900826
AUPRC: 0.6001816082701088
Sensitivity: 0.723499361430396
Specificity: 0.7390210430009149
Threshold: 0.14
Accuracy:  0.7349275850454698


Plot AUROC/AUPRC for Each Intermediate Model
  Epoch with best Validation Loss:      36, 0.4794
  Epoch with best model Test AUROC:      5, 0.8364
  Epoch with best model Test Accuracy:   8, 0.7686

AUROC/AUPRC Plots - Best Model Based on Validation Loss
  Epoch with best Validation Loss:   36, 0.4794
  Best Model Based on Validation Loss:
    ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0036.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 0.4549497254985444
AUROC: 0.8186236663359892
AUPRC: 0.6271802520040111
Sensitivity: 0.7490421455938697
Specificity: 0.7385635864592863
Threshold: 0.22
Accuracy:  0.7413270461434827
<Figure size 640x480 with 0 Axes>
best_model_val_test_auroc: 0.8186236663359892
best_model_val_test_auprc: 0.6271802520040111

AUROC/AUPRC Plots - Best Model Based on Model AUROC
  Epoch with best model Test AUROC:   5, 0.8364
  Best Model Based on Model AUROC:
    ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_247b763f_0005.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 0.5520139701188879
AUROC: 0.8363903465569238
AUPRC: 0.6840826971532205
Sensitivity: 0.7535121328224776
Specificity: 0.7653247941445562
Threshold: 0.1
Accuracy:  0.7622094981475244
best_model_auroc_test_auroc: 0.8363903465569238
best_model_auroc_test_auprc: 0.6840826971532205

Total Processing Time: 4604.3620 sec

ABP and Learning Rate¶

In [111]:
RUN_ME = True

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=True, 
        useEeg=False, 
        useEcg=False,
        nResiduals=12, 
        skip_connection=False,
        batch_size=64,
        learning_rate=1e-2,
        weight_decay=0.0,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
Experiment Setup
  name:              ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d
  prediction_window: 003
  max_cases:         _ALL
  use_abp:           True
  use_eeg:           False
  use_ecg:           False
  n_residuals:       12
  skip_connection:   False
  batch_size:        128
  learning_rate:     0.01
  weight_decay:      0.0
  balance_labels:    False
  max_epochs:        200
  patience:          20
  device:            mps

Model Architecture
HypotensionCNN(
  (abpResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
  )
  (abpFc): Linear(in_features=2814, out_features=32, bias=True)
  (fullLinear1): Linear(in_features=32, out_features=16, bias=True)
  (fullLinear2): Linear(in_features=16, out_features=1, bias=True)
  (sigmoid): Sigmoid()
)

Training Loop
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-03 10:21:45.141161] Completed epoch 0 with training loss 26.89650536, validation loss 29.39033127
Validation loss improved to 29.39033127. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-03 10:22:37.933374] Completed epoch 1 with training loss 27.45348358, validation loss 29.24332047
Validation loss improved to 29.24332047. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-03 10:23:30.426323] Completed epoch 2 with training loss 27.44785690, validation loss 29.39033127
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-03 10:24:23.571915] Completed epoch 3 with training loss 27.45910645, validation loss 29.39033127
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-03 10:25:15.727698] Completed epoch 4 with training loss 27.47598076, validation loss 29.35357857
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
[2024-05-03 10:26:08.064297] Completed epoch 5 with training loss 27.46473312, validation loss 29.37195587
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-03 10:27:00.285606] Completed epoch 6 with training loss 27.45348358, validation loss 29.28007507
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-03 10:27:52.410415] Completed epoch 7 with training loss 27.43660927, validation loss 29.40870667
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
[2024-05-03 10:28:44.669149] Completed epoch 8 with training loss 27.45348358, validation loss 29.44545937
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
[2024-05-03 10:29:36.702106] Completed epoch 9 with training loss 27.49847603, validation loss 29.35357857
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-03 10:30:30.006132] Completed epoch 10 with training loss 27.52097511, validation loss 29.28007507
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-03 10:31:23.990404] Completed epoch 11 with training loss 27.47598076, validation loss 29.24332047
No improvement in validation loss. 10 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
[2024-05-03 10:32:17.487144] Completed epoch 12 with training loss 27.49847603, validation loss 29.24332047
No improvement in validation loss. 11 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  2.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-03 10:33:10.082313] Completed epoch 13 with training loss 27.47035599, validation loss 29.26169777
No improvement in validation loss. 12 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-03 10:34:02.382507] Completed epoch 14 with training loss 27.44785690, validation loss 29.35357857
No improvement in validation loss. 13 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
[2024-05-03 10:34:54.303106] Completed epoch 15 with training loss 27.45910645, validation loss 29.18819427
Validation loss improved to 29.18819427. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
[2024-05-03 10:35:46.437935] Completed epoch 16 with training loss 27.44785690, validation loss 29.39033127
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:44<00:00,  2.05it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-03 10:36:37.930240] Completed epoch 17 with training loss 27.46473312, validation loss 29.33520126
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
[2024-05-03 10:37:30.038396] Completed epoch 18 with training loss 27.43098450, validation loss 29.35357857
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
[2024-05-03 10:38:22.140742] Completed epoch 19 with training loss 27.49847603, validation loss 29.24332047
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  2.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
[2024-05-03 10:39:14.518305] Completed epoch 20 with training loss 27.45910645, validation loss 29.40870667
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:44<00:00,  2.05it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
[2024-05-03 10:40:05.755485] Completed epoch 21 with training loss 27.47598076, validation loss 29.33520126
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:44<00:00,  2.05it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
[2024-05-03 10:40:56.908730] Completed epoch 22 with training loss 27.47035599, validation loss 29.42708206
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-03 10:41:48.975047] Completed epoch 23 with training loss 27.47598076, validation loss 29.29845047
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.03it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
[2024-05-03 10:42:40.668665] Completed epoch 24 with training loss 27.47598076, validation loss 29.31682587
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
[2024-05-03 10:43:32.728895] Completed epoch 25 with training loss 27.45910645, validation loss 29.31682587
No improvement in validation loss. 10 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
[2024-05-03 10:44:25.718857] Completed epoch 26 with training loss 27.44785690, validation loss 29.37195587
No improvement in validation loss. 11 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.04it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
[2024-05-03 10:45:17.028082] Completed epoch 27 with training loss 27.45910645, validation loss 29.28007507
No improvement in validation loss. 12 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.04it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
[2024-05-03 10:46:08.356937] Completed epoch 28 with training loss 27.47035599, validation loss 29.35357857
No improvement in validation loss. 13 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
[2024-05-03 10:47:01.777201] Completed epoch 29 with training loss 27.48160362, validation loss 29.42708206
No improvement in validation loss. 14 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-03 10:47:55.380517] Completed epoch 30 with training loss 27.44223404, validation loss 29.28007507
No improvement in validation loss. 15 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
[2024-05-03 10:48:48.489297] Completed epoch 31 with training loss 27.47598076, validation loss 29.28007507
No improvement in validation loss. 16 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
[2024-05-03 10:49:40.344499] Completed epoch 32 with training loss 27.46473312, validation loss 29.42708206
No improvement in validation loss. 17 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
[2024-05-03 10:50:34.852410] Completed epoch 33 with training loss 27.52097511, validation loss 29.44545937
No improvement in validation loss. 18 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
[2024-05-03 10:51:27.612728] Completed epoch 34 with training loss 27.44785690, validation loss 29.29845047
No improvement in validation loss. 19 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
[2024-05-03 10:52:20.333833] Completed epoch 35 with training loss 27.47035599, validation loss 29.28007507
No improvement in validation loss. 20 epochs without improvement.
Early stopping due to no improvement in validation loss.

Plot Validation and Loss Values from Training
  Epoch with best Validation Loss:   15, 29.19
Generate AUROC/AUPRC for Each Intermediate Model

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0000.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:05<00:00,  2.81it/s]
Loss: 29.280073881149292
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0001.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 29.2065691947937
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.49it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0002.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 29.427083253860474
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0003.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
Loss: 29.280073881149292
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.38it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0004.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.37it/s]
Loss: 29.243321537971497
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.34it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0005.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
Loss: 29.40870714187622
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0006.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
Loss: 29.371954798698425
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0007.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
Loss: 29.390331029891968
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.49it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0008.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
Loss: 29.445459604263306
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0009.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
Loss: 29.33520245552063
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.49it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0010.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
Loss: 29.390331029891968
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0011.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
Loss: 29.26169776916504
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.50it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0012.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
Loss: 29.390331029891968
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.46it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0013.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
Loss: 29.316826224327087
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.49it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0014.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
Loss: 29.316826224327087
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0015.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 29.53734040260315
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.49it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0016.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 29.33520245552063
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.47it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0017.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 29.224945425987244
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0018.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
Loss: 29.298450112342834
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.44it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0019.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 29.371954798698425
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:20<00:00,  2.31it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0020.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
Loss: 29.316826224327087
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.46it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0021.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
Loss: 29.371954798698425
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0022.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
Loss: 29.445459604263306
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.47it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0023.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
Loss: 29.33520245552063
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.52it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0024.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
Loss: 29.26169776916504
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.52it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0025.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 29.40870714187622
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.52it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0026.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
Loss: 29.353578686714172
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0027.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
Loss: 29.353578686714172
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.52it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0028.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 29.33520245552063
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0029.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
Loss: 29.353578686714172
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.52it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0030.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
Loss: 29.243321537971497
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.52it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0031.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
Loss: 29.224945425987244
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.51it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0032.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
Loss: 29.427083253860474
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0033.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
Loss: 29.316826224327087
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.52it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0034.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 29.2065691947937
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0035.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
Loss: 29.40870714187622
AUROC: 0.5
AUPRC: 0.646795827123696
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.706408345752608

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.51it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725


Plot AUROC/AUPRC for Each Intermediate Model
  Epoch with best Validation Loss:      15, 29.19
  Epoch with best model Test AUROC:      0, 0.5
  Epoch with best model Test Accuracy:   0, 0.7363

AUROC/AUPRC Plots - Best Model Based on Validation Loss
  Epoch with best Validation Loss:   15, 29.19
  Best Model Based on Validation Loss:
    ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0015.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.50it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725
<Figure size 640x480 with 0 Axes>
best_model_val_test_auroc: 0.5
best_model_val_test_auprc: 0.6318625799932638

AUROC/AUPRC Plots - Best Model Based on Model AUROC
  Epoch with best model Test AUROC:   0, 0.5
  Best Model Based on Model AUROC:
    ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-02_LEARNING_RATE_003_MINS__ALL_MAX_CASES_5734575d_0000.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.49it/s]
Loss: 26.10837765957447
AUROC: 0.5
AUPRC: 0.6318625799932638
Sensitivity: 0.0
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7362748400134725
best_model_auroc_test_auroc: 0.5
best_model_auroc_test_auprc: 0.6318625799932638

Total Processing Time: 2878.2630 sec
In [112]:
RUN_ME = True

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=True, 
        useEeg=False, 
        useEcg=False,
        nResiduals=12, 
        skip_connection=False,
        batch_size=64,
        learning_rate=1e-3,
        weight_decay=0.0,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
Experiment Setup
  name:              ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f
  prediction_window: 003
  max_cases:         _ALL
  use_abp:           True
  use_eeg:           False
  use_ecg:           False
  n_residuals:       12
  skip_connection:   False
  batch_size:        128
  learning_rate:     0.001
  weight_decay:      0.0
  balance_labels:    False
  max_epochs:        200
  patience:          20
  device:            mps

Model Architecture
HypotensionCNN(
  (abpResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
  )
  (abpFc): Linear(in_features=2814, out_features=32, bias=True)
  (fullLinear1): Linear(in_features=32, out_features=16, bias=True)
  (fullLinear2): Linear(in_features=16, out_features=1, bias=True)
  (sigmoid): Sigmoid()
)

Training Loop
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-03 11:09:42.703009] Completed epoch 0 with training loss 0.46423593, validation loss 0.55611765
Validation loss improved to 0.55611765. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
[2024-05-03 11:10:34.943579] Completed epoch 1 with training loss 0.43096617, validation loss 0.52088046
Validation loss improved to 0.52088046. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
[2024-05-03 11:11:26.903108] Completed epoch 2 with training loss 0.42810401, validation loss 0.49270666
Validation loss improved to 0.49270666. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-03 11:12:19.147914] Completed epoch 3 with training loss 0.42335933, validation loss 0.49514502
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-03 11:13:11.429267] Completed epoch 4 with training loss 0.42071965, validation loss 0.62278050
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
[2024-05-03 11:14:03.802942] Completed epoch 5 with training loss 0.41893396, validation loss 0.52890670
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.12it/s]
[2024-05-03 11:14:56.875554] Completed epoch 6 with training loss 0.41558295, validation loss 0.50233620
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
[2024-05-03 11:15:50.901626] Completed epoch 7 with training loss 0.41375160, validation loss 0.55588353
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
[2024-05-03 11:16:43.770860] Completed epoch 8 with training loss 0.40871316, validation loss 0.57673758
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.04it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
[2024-05-03 11:17:35.291619] Completed epoch 9 with training loss 0.40706632, validation loss 0.58177203
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.03it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
[2024-05-03 11:18:27.036819] Completed epoch 10 with training loss 0.40969396, validation loss 0.51723158
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.03it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
[2024-05-03 11:19:18.657121] Completed epoch 11 with training loss 0.39834848, validation loss 0.56230974
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
[2024-05-03 11:20:10.998424] Completed epoch 12 with training loss 0.39971253, validation loss 0.59179890
No improvement in validation loss. 10 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.04it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
[2024-05-03 11:21:02.468155] Completed epoch 13 with training loss 0.39500466, validation loss 0.49403298
No improvement in validation loss. 11 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.03it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
[2024-05-03 11:21:54.218732] Completed epoch 14 with training loss 0.39415148, validation loss 0.47151977
Validation loss improved to 0.47151977. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
[2024-05-03 11:22:46.150100] Completed epoch 15 with training loss 0.39525878, validation loss 0.50882357
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.03it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
[2024-05-03 11:23:37.732858] Completed epoch 16 with training loss 0.38879392, validation loss 0.46090400
Validation loss improved to 0.46090400. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
[2024-05-03 11:24:29.599865] Completed epoch 17 with training loss 0.38778397, validation loss 0.52161479
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.03it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
[2024-05-03 11:25:21.282614] Completed epoch 18 with training loss 0.38148946, validation loss 0.56085432
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.03it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
[2024-05-03 11:26:13.085530] Completed epoch 19 with training loss 0.38056201, validation loss 0.49885330
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
[2024-05-03 11:27:04.937630] Completed epoch 20 with training loss 0.37592107, validation loss 0.63053268
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.04it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
[2024-05-03 11:27:56.401620] Completed epoch 21 with training loss 0.37994614, validation loss 0.73757052
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.03it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
[2024-05-03 11:28:47.990848] Completed epoch 22 with training loss 0.36971229, validation loss 0.49830377
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.04it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-03 11:29:39.601272] Completed epoch 23 with training loss 0.36943913, validation loss 0.47155666
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.03it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
[2024-05-03 11:30:31.231841] Completed epoch 24 with training loss 0.36546251, validation loss 0.51036161
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.04it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.15it/s]
[2024-05-03 11:31:23.897877] Completed epoch 25 with training loss 0.36397603, validation loss 0.50092483
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:44<00:00,  2.05it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.59it/s]
[2024-05-03 11:32:14.999729] Completed epoch 26 with training loss 0.36041373, validation loss 0.50063735
No improvement in validation loss. 10 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:44<00:00,  2.07it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.60it/s]
[2024-05-03 11:33:05.574774] Completed epoch 27 with training loss 0.35898218, validation loss 0.65012813
No improvement in validation loss. 11 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.01it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-03 11:33:57.835472] Completed epoch 28 with training loss 0.36020204, validation loss 0.62398404
No improvement in validation loss. 12 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.31it/s]
[2024-05-03 11:34:52.659734] Completed epoch 29 with training loss 0.35695034, validation loss 0.52094102
No improvement in validation loss. 13 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
[2024-05-03 11:35:46.864080] Completed epoch 30 with training loss 0.35038379, validation loss 0.64545298
No improvement in validation loss. 14 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-03 11:36:39.662600] Completed epoch 31 with training loss 0.35189059, validation loss 0.56954610
No improvement in validation loss. 15 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-03 11:37:32.148580] Completed epoch 32 with training loss 0.34783036, validation loss 0.78567231
No improvement in validation loss. 16 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  2.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-03 11:38:24.617522] Completed epoch 33 with training loss 0.34309724, validation loss 0.56573129
No improvement in validation loss. 17 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  2.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-03 11:39:17.151204] Completed epoch 34 with training loss 0.34519258, validation loss 0.56332898
No improvement in validation loss. 18 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-03 11:40:10.331210] Completed epoch 35 with training loss 0.34144175, validation loss 0.60875356
No improvement in validation loss. 19 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.00it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-03 11:41:02.795368] Completed epoch 36 with training loss 0.33515221, validation loss 0.56248480
No improvement in validation loss. 20 epochs without improvement.
Early stopping due to no improvement in validation loss.

Plot Validation and Loss Values from Training
  Epoch with best Validation Loss:   16, 0.4609
Generate AUROC/AUPRC for Each Intermediate Model

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0000.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:05<00:00,  2.75it/s]
Loss: 0.555572398006916
AUROC: 0.8452835666740441
AUPRC: 0.6992692237743106
Sensitivity: 0.7732656514382402
Specificity: 0.7573839662447257
Threshold: 0.12
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.46it/s]
Loss: 0.5215346017416488
AUROC: 0.8357641919611507
AUPRC: 0.6840748282867665
Sensitivity: 0.7515964240102171
Specificity: 0.7685269899359561
Threshold: 0.12
Accuracy:  0.7640619737285281

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0001.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
Loss: 0.5238506589084864
AUROC: 0.8402562107182039
AUPRC: 0.6906884187864709
Sensitivity: 0.7597292724196277
Specificity: 0.7609001406469761
Threshold: 0.17
Accuracy:  0.7605563835072032

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 0.49751259101198075
AUROC: 0.8294183700058073
AUPRC: 0.6721377893943806
Sensitivity: 0.7477650063856961
Specificity: 0.7589204025617566
Threshold: 0.16
Accuracy:  0.7559784439205119

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0002.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
Loss: 0.49287222884595394
AUROC: 0.839143647920876
AUPRC: 0.687929079707332
Sensitivity: 0.754653130287648
Specificity: 0.7630098452883263
Threshold: 0.21
Accuracy:  0.7605563835072032

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 0.4713360026795813
AUROC: 0.8289956754874571
AUPRC: 0.6700806006387936
Sensitivity: 0.7567049808429118
Specificity: 0.7509149130832571
Threshold: 0.19
Accuracy:  0.7524418996295049

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0003.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 0.4949106480926275
AUROC: 0.8369090030723392
AUPRC: 0.6728756849157947
Sensitivity: 0.7614213197969543
Specificity: 0.7566807313642757
Threshold: 0.22
Accuracy:  0.7580725285643318

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.49it/s]
Loss: 0.47293390111720307
AUROC: 0.8244431649682935
AUPRC: 0.6585916075658996
Sensitivity: 0.7458492975734355
Specificity: 0.7568618481244281
Threshold: 0.21
Accuracy:  0.7539575614685079

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0004.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
Loss: 0.6223115921020508
AUROC: 0.8441531552756895
AUPRC: 0.689587797708378
Sensitivity: 0.7428087986463621
Specificity: 0.7770745428973277
Threshold: 0.08
Accuracy:  0.7670144063586687

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 0.5925399049165401
AUROC: 0.8326066901996801
AUPRC: 0.6723120601525634
Sensitivity: 0.7541507024265645
Specificity: 0.7632662397072278
Threshold: 0.07
Accuracy:  0.7608622431795218

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0005.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 0.5302465390414
AUROC: 0.8433095114004964
AUPRC: 0.6796479024044924
Sensitivity: 0.7563451776649747
Specificity: 0.7651195499296765
Threshold: 0.13
Accuracy:  0.7625434674615003

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.47it/s]
Loss: 0.5086775485505449
AUROC: 0.8319248141254167
AUPRC: 0.6663121456300446
Sensitivity: 0.7624521072796935
Specificity: 0.747483989021043
Threshold: 0.11
Accuracy:  0.7514314584035029

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0006.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
Loss: 0.5028159730136395
AUROC: 0.8291639001335075
AUPRC: 0.6478463404884954
Sensitivity: 0.7563451776649747
Specificity: 0.7735583684950773
Threshold: 0.43
Accuracy:  0.7685047193243915

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 0.4902145431396809
AUROC: 0.8216991560131289
AUPRC: 0.6399858083183155
Sensitivity: 0.7586206896551724
Specificity: 0.7477127172918573
Threshold: 0.41000000000000003
Accuracy:  0.7505894240485012

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0007.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
Loss: 0.5549170635640621
AUROC: 0.8412831002306039
AUPRC: 0.665289821661801
Sensitivity: 0.7766497461928934
Specificity: 0.7672292545710268
Threshold: 0.13
Accuracy:  0.7699950322901142

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.49it/s]
Loss: 0.5297312879181922
AUROC: 0.8258158267110219
AUPRC: 0.6516379986711575
Sensitivity: 0.7509578544061303
Specificity: 0.7481701738334858
Threshold: 0.12
Accuracy:  0.7489053553384978

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0008.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
Loss: 0.5729344617575407
AUROC: 0.8398623515888824
AUPRC: 0.65953929495093
Sensitivity: 0.7698815566835872
Specificity: 0.7693389592123769
Threshold: 0.11
Accuracy:  0.76949826130154

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.50it/s]
Loss: 0.5506422440422342
AUROC: 0.8262006919687459
AUPRC: 0.6486467803883764
Sensitivity: 0.7458492975734355
Specificity: 0.7511436413540714
Threshold: 0.1
Accuracy:  0.7497473896934995

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0009.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
Loss: 0.5826754048466682
AUROC: 0.8310867894174454
AUPRC: 0.6252636060612299
Sensitivity: 0.7461928934010152
Specificity: 0.7869198312236287
Threshold: 0.12
Accuracy:  0.7749627421758569

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.47it/s]
Loss: 0.5500412665783091
AUROC: 0.8191357489141979
AUPRC: 0.6218288406078215
Sensitivity: 0.7611749680715197
Specificity: 0.7319304666056725
Threshold: 0.1
Accuracy:  0.7396429774334793

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0010.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
Loss: 0.5175346303731203
AUROC: 0.8279847025590134
AUPRC: 0.6388123161679106
Sensitivity: 0.754653130287648
Specificity: 0.7566807313642757
Threshold: 0.17
Accuracy:  0.7560854446100348

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 0.4951318813131211
AUROC: 0.8178380884275764
AUPRC: 0.6267603481138552
Sensitivity: 0.7330779054916986
Specificity: 0.7504574565416285
Threshold: 0.16
Accuracy:  0.7458740316604917

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0011.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
Loss: 0.5654339771717787
AUROC: 0.8352514629903308
AUPRC: 0.6574008488382533
Sensitivity: 0.7715736040609137
Specificity: 0.7510548523206751
Threshold: 0.11
Accuracy:  0.7570789865871833

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.40it/s]
Loss: 0.5339380873644606
AUROC: 0.8262186572160702
AUPRC: 0.6480156359887923
Sensitivity: 0.7445721583652618
Specificity: 0.7573193046660567
Threshold: 0.11
Accuracy:  0.7539575614685079

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0012.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
Loss: 0.5945740323513746
AUROC: 0.8307429063709986
AUPRC: 0.6492201844125687
Sensitivity: 0.7495769881556683
Specificity: 0.7630098452883263
Threshold: 0.1
Accuracy:  0.7590660705414803

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.47it/s]
Loss: 0.5569047613980922
AUROC: 0.8249055875132476
AUPRC: 0.6432578003058609
Sensitivity: 0.7630906768837803
Specificity: 0.7481701738334858
Threshold: 0.09
Accuracy:  0.7521050858875042

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0013.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
Loss: 0.4944318048655987
AUROC: 0.8026617023757677
AUPRC: 0.5777647868458313
Sensitivity: 0.7343485617597293
Specificity: 0.7369901547116737
Threshold: 0.27
Accuracy:  0.736214605067064

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.49it/s]
Loss: 0.4693794890921167
AUROC: 0.7978227580831927
AUPRC: 0.5795064533157713
Sensitivity: 0.7203065134099617
Specificity: 0.7403934126258005
Threshold: 0.26
Accuracy:  0.7350959919164702

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0014.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
Loss: 0.47031228989362717
AUROC: 0.8252978931511347
AUPRC: 0.6456577005066627
Sensitivity: 0.7428087986463621
Specificity: 0.7587904360056259
Threshold: 0.38
Accuracy:  0.7540983606557377

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 0.454097218335943
AUROC: 0.8209593675765552
AUPRC: 0.6395126124901845
Sensitivity: 0.756066411238825
Specificity: 0.7429094236047575
Threshold: 0.36
Accuracy:  0.7463792522734928

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0015.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
Loss: 0.512966088950634
AUROC: 0.8237343557012002
AUPRC: 0.6280538415833656
Sensitivity: 0.7445008460236887
Specificity: 0.7679324894514767
Threshold: 0.18
Accuracy:  0.7610531544957775

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.48it/s]
Loss: 0.4848339728852536
AUROC: 0.8148947090447863
AUPRC: 0.6141703860603077
Sensitivity: 0.7471264367816092
Specificity: 0.7339890210430009
Threshold: 0.16
Accuracy:  0.737453688110475

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0016.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
Loss: 0.4610835239291191
AUROC: 0.8268412021865726
AUPRC: 0.6547785568933091
Sensitivity: 0.7580372250423012
Specificity: 0.7545710267229254
Threshold: 0.31
Accuracy:  0.7555886736214605

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.52it/s]
Loss: 0.44281463451842046
AUROC: 0.8201596949822334
AUPRC: 0.6447388507645381
Sensitivity: 0.7509578544061303
Specificity: 0.7518298261665142
Threshold: 0.3
Accuracy:  0.7515998652745032

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0017.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5201683379709721
AUROC: 0.8155787349387554
AUPRC: 0.6168574612514094
Sensitivity: 0.7529610829103215
Specificity: 0.7461322081575246
Threshold: 0.16
Accuracy:  0.7481371087928465

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.49336153839496855
AUROC: 0.807466006246648
AUPRC: 0.6103479323187643
Sensitivity: 0.7343550446998723
Specificity: 0.734903934126258
Threshold: 0.15
Accuracy:  0.7347591781744696

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0018.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5597958099097013
AUROC: 0.8093650419680106
AUPRC: 0.6163288320072804
Sensitivity: 0.7343485617597293
Specificity: 0.740506329113924
Threshold: 0.13
Accuracy:  0.7386984600099354

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.5246913702564037
AUROC: 0.8029196302021806
AUPRC: 0.6016937895094899
Sensitivity: 0.7426564495530013
Specificity: 0.729871912168344
Threshold: 0.12
Accuracy:  0.7332435163354665

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0019.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
Loss: 0.4993542768061161
AUROC: 0.8090104497609478
AUPRC: 0.627278056142535
Sensitivity: 0.7478849407783418
Specificity: 0.750351617440225
Threshold: 0.4
Accuracy:  0.7496274217585693

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.48034185107718125
AUROC: 0.8026169961171696
AUPRC: 0.6192729073472525
Sensitivity: 0.7305236270753512
Specificity: 0.7381061299176578
Threshold: 0.38
Accuracy:  0.7361064331424723

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0020.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
Loss: 0.6319143176078796
AUROC: 0.8130989693027859
AUPRC: 0.6082268821316241
Sensitivity: 0.7343485617597293
Specificity: 0.7510548523206751
Threshold: 0.08
Accuracy:  0.7461500248385494

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.50it/s]
Loss: 0.596272016459323
AUROC: 0.8071172175424943
AUPRC: 0.6003359793649337
Sensitivity: 0.7420178799489144
Specificity: 0.7291857273559011
Threshold: 0.07
Accuracy:  0.7325698888514651

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0021.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
Loss: 0.7362904362380505
AUROC: 0.7831704351012968
AUPRC: 0.5661842189566171
Sensitivity: 0.6937394247038917
Specificity: 0.7383966244725738
Threshold: 0.06
Accuracy:  0.7252856433184302

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.47it/s]
Loss: 0.6821564252072192
AUROC: 0.7813743326567884
AUPRC: 0.5595128988934368
Sensitivity: 0.7266922094508301
Specificity: 0.7090576395242452
Threshold: 0.05
Accuracy:  0.7137083192994275

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0022.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.49616968631744385
AUROC: 0.8120863586712073
AUPRC: 0.62529781817341
Sensitivity: 0.7495769881556683
Specificity: 0.740506329113924
Threshold: 0.19
Accuracy:  0.7431693989071039

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.46705295145511627
AUROC: 0.810227542272373
AUPRC: 0.6174009640945723
Sensitivity: 0.7337164750957854
Specificity: 0.7390210430009149
Threshold: 0.18
Accuracy:  0.7376220949814752

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0023.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
Loss: 0.4711654335260391
AUROC: 0.8162034359746884
AUPRC: 0.6425975138917881
Sensitivity: 0.7495769881556683
Specificity: 0.7426160337552743
Threshold: 0.26
Accuracy:  0.7446597118728266

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.56it/s]
Loss: 0.44967230995918844
AUROC: 0.8117285898069568
AUPRC: 0.6219334242000751
Sensitivity: 0.7484035759897829
Specificity: 0.7431381518755719
Threshold: 0.25
Accuracy:  0.744526776692489

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0024.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 0.5087292231619358
AUROC: 0.7986493368649765
AUPRC: 0.594006299824645
Sensitivity: 0.7326565143824028
Specificity: 0.7250351617440225
Threshold: 0.2
Accuracy:  0.7272727272727273

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.56it/s]
Loss: 0.47995816076055486
AUROC: 0.7961602424110705
AUPRC: 0.5835792060305323
Sensitivity: 0.7247765006385696
Specificity: 0.7365050320219579
Threshold: 0.19
Accuracy:  0.7334119232064669

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0025.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
Loss: 0.5021091066300869
AUROC: 0.8066472949850191
AUPRC: 0.6257229183969472
Sensitivity: 0.7461928934010152
Specificity: 0.7355836849507735
Threshold: 0.4
Accuracy:  0.7386984600099354

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.47762789561393415
AUROC: 0.8023748304255924
AUPRC: 0.6165561966243851
Sensitivity: 0.7260536398467433
Specificity: 0.7376486733760292
Threshold: 0.39
Accuracy:  0.7345907713034692

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0026.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
Loss: 0.500686664134264
AUROC: 0.815909529011116
AUPRC: 0.6394841459007257
Sensitivity: 0.7445008460236887
Specificity: 0.7433192686357243
Threshold: 0.42
Accuracy:  0.7436661698956781

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.47399911094219127
AUROC: 0.8132733819884812
AUPRC: 0.6289223723614324
Sensitivity: 0.7452107279693486
Specificity: 0.7410795974382434
Threshold: 0.4
Accuracy:  0.7421690804984843

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0027.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
Loss: 0.6528439708054066
AUROC: 0.8032048948003457
AUPRC: 0.5980477259631047
Sensitivity: 0.7411167512690355
Specificity: 0.7222222222222222
Threshold: 0.07
Accuracy:  0.7277694982613016

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.609232504000055
AUROC: 0.7988038358578158
AUPRC: 0.5908082297617817
Sensitivity: 0.7203065134099617
Specificity: 0.7410795974382434
Threshold: 0.07
Accuracy:  0.7356012125294712

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0028.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.6237866021692753
AUROC: 0.8074445324975429
AUPRC: 0.5986255939771249
Sensitivity: 0.7343485617597293
Specificity: 0.7362869198312236
Threshold: 0.08
Accuracy:  0.7357178340784898

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.56it/s]
Loss: 0.5900881629674992
AUROC: 0.8023406526379994
AUPRC: 0.594204912915874
Sensitivity: 0.7362707535121328
Specificity: 0.727355901189387
Threshold: 0.07
Accuracy:  0.7297069720444594

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0029.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
Loss: 0.5198144484311342
AUROC: 0.7983381762537454
AUPRC: 0.5991910178032134
Sensitivity: 0.7292724196277496
Specificity: 0.7355836849507735
Threshold: 0.4
Accuracy:  0.7337307501241928

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.48822682588658434
AUROC: 0.7928174649078836
AUPRC: 0.5916560484449205
Sensitivity: 0.7266922094508301
Specificity: 0.7259835315645013
Threshold: 0.37
Accuracy:  0.7261704277534523

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0030.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
Loss: 0.6503834389150143
AUROC: 0.7542247638630084
AUPRC: 0.5360040463868773
Sensitivity: 0.7021996615905245
Specificity: 0.6856540084388185
Threshold: 0.09
Accuracy:  0.6905116741182314

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.5974084230813574
AUROC: 0.7584797427960819
AUPRC: 0.5209161834786165
Sensitivity: 0.6915708812260536
Specificity: 0.7067703568161025
Threshold: 0.09
Accuracy:  0.7027618726844055

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0031.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5713856015354395
AUROC: 0.8020721035885207
AUPRC: 0.6262738361004327
Sensitivity: 0.7191201353637902
Specificity: 0.7355836849507735
Threshold: 0.12
Accuracy:  0.7307501241927471

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.5425181984901428
AUROC: 0.7924339141804516
AUPRC: 0.5985529270426999
Sensitivity: 0.7203065134099617
Specificity: 0.7282708142726441
Threshold: 0.11
Accuracy:  0.7261704277534523

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0032.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 0.784771516919136
AUROC: 0.7453766173807298
AUPRC: 0.5184445291463318
Sensitivity: 0.6683587140439933
Specificity: 0.69901547116737
Threshold: 0.05
Accuracy:  0.6900149031296572

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.7181909743775713
AUROC: 0.7526741927907652
AUPRC: 0.504973952741539
Sensitivity: 0.722860791826309
Specificity: 0.6710887465690759
Threshold: 0.04
Accuracy:  0.6847423374873695

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0033.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5642521418631077
AUROC: 0.7727063952727385
AUPRC: 0.5607067093675303
Sensitivity: 0.7089678510998308
Specificity: 0.7123769338959213
Threshold: 0.39
Accuracy:  0.7113760556383507

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.56it/s]
Loss: 0.526269997053958
AUROC: 0.767222829827335
AUPRC: 0.5486056737328506
Sensitivity: 0.7043422733077905
Specificity: 0.6985361390667887
Threshold: 0.35000000000000003
Accuracy:  0.7000673627484001

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0034.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5611789803951979
AUROC: 0.7321722223412129
AUPRC: 0.5166450736573639
Sensitivity: 0.6734348561759729
Specificity: 0.6652601969057665
Threshold: 0.24
Accuracy:  0.6676602086438153

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.51it/s]
Loss: 0.5177544234914983
AUROC: 0.7362051730564524
AUPRC: 0.5052448021388973
Sensitivity: 0.6864623243933589
Specificity: 0.6740622140896615
Threshold: 0.23
Accuracy:  0.6773324351633546

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0035.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 0.6094383969902992
AUROC: 0.7171746378518851
AUPRC: 0.4947564149311754
Sensitivity: 0.6531302876480541
Specificity: 0.6554149085794655
Threshold: 0.16
Accuracy:  0.6547441629408842

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.5629143382006503
AUROC: 0.7214754229574244
AUPRC: 0.4767464313600863
Sensitivity: 0.6634738186462324
Specificity: 0.6726898444647759
Threshold: 0.15
Accuracy:  0.6702593465813406

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0036.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5629648193717003
AUROC: 0.8020869774227095
AUPRC: 0.609598467503317
Sensitivity: 0.7428087986463621
Specificity: 0.7440225035161744
Threshold: 0.48
Accuracy:  0.7436661698956781

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.5275455129907486
AUROC: 0.7953302625905712
AUPRC: 0.5984965040050139
Sensitivity: 0.7273307790549169
Specificity: 0.7358188472095151
Threshold: 0.46
Accuracy:  0.7335803300774671


Plot AUROC/AUPRC for Each Intermediate Model
  Epoch with best Validation Loss:      16, 0.4609
  Epoch with best model Test AUROC:      0, 0.8358
  Epoch with best model Test Accuracy:   0, 0.7641

AUROC/AUPRC Plots - Best Model Based on Validation Loss
  Epoch with best Validation Loss:   16, 0.4609
  Best Model Based on Validation Loss:
    ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0016.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.44281463451842046
AUROC: 0.8201596949822334
AUPRC: 0.6447388507645381
Sensitivity: 0.7509578544061303
Specificity: 0.7518298261665142
Threshold: 0.3
Accuracy:  0.7515998652745032
<Figure size 640x480 with 0 Axes>
best_model_val_test_auroc: 0.8201596949822334
best_model_val_test_auprc: 0.6447388507645381

AUROC/AUPRC Plots - Best Model Based on Model AUROC
  Epoch with best model Test AUROC:   0, 0.8358
  Best Model Based on Model AUROC:
    ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-03_LEARNING_RATE_003_MINS__ALL_MAX_CASES_f192954f_0000.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.5215346017416488
AUROC: 0.8357641919611507
AUPRC: 0.6840748282867665
Sensitivity: 0.7515964240102171
Specificity: 0.7685269899359561
Threshold: 0.12
Accuracy:  0.7640619737285281
best_model_auroc_test_auroc: 0.8357641919611507
best_model_auroc_test_auprc: 0.6840748282867665

Total Processing Time: 2936.3660 sec
In [113]:
RUN_ME = True

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=True, 
        useEeg=False, 
        useEcg=False,
        nResiduals=12, 
        skip_connection=False,
        batch_size=64,
        learning_rate=1e-4,
        weight_decay=0.0,
        balance_labels=False,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
Experiment Setup
  name:              ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71
  prediction_window: 003
  max_cases:         _ALL
  use_abp:           True
  use_eeg:           False
  use_ecg:           False
  n_residuals:       12
  skip_connection:   False
  batch_size:        128
  learning_rate:     0.0001
  weight_decay:      0.0
  balance_labels:    False
  max_epochs:        200
  patience:          20
  device:            mps

Model Architecture
HypotensionCNN(
  (abpResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
  )
  (abpFc): Linear(in_features=2814, out_features=32, bias=True)
  (fullLinear1): Linear(in_features=32, out_features=16, bias=True)
  (fullLinear2): Linear(in_features=16, out_features=1, bias=True)
  (sigmoid): Sigmoid()
)

Training Loop
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.03it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
[2024-05-03 11:58:38.655356] Completed epoch 0 with training loss 0.49746269, validation loss 0.58577287
Validation loss improved to 0.58577287. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:44<00:00,  2.04it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
[2024-05-03 11:59:30.034862] Completed epoch 1 with training loss 0.44051114, validation loss 0.60004735
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.04it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:08<00:00,  1.97it/s]
[2024-05-03 12:00:23.357350] Completed epoch 2 with training loss 0.43296921, validation loss 0.57985026
Validation loss improved to 0.57985026. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
[2024-05-03 12:01:17.398920] Completed epoch 3 with training loss 0.42964807, validation loss 0.58797473
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.32it/s]
[2024-05-03 12:02:11.253001] Completed epoch 4 with training loss 0.42745328, validation loss 0.60497987
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
[2024-05-03 12:03:05.958401] Completed epoch 5 with training loss 0.42538333, validation loss 0.59091270
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-03 12:03:59.971282] Completed epoch 6 with training loss 0.42322877, validation loss 0.56010288
Validation loss improved to 0.56010288. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-03 12:04:53.115736] Completed epoch 7 with training loss 0.42231730, validation loss 0.55182755
Validation loss improved to 0.55182755. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-03 12:05:45.879112] Completed epoch 8 with training loss 0.42301348, validation loss 0.56768674
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.90it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
[2024-05-03 12:06:41.036846] Completed epoch 9 with training loss 0.42012593, validation loss 0.53465033
Validation loss improved to 0.53465033. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-03 12:07:35.430706] Completed epoch 10 with training loss 0.42109573, validation loss 0.53814483
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
[2024-05-03 12:08:28.784649] Completed epoch 11 with training loss 0.41748631, validation loss 0.53835535
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
[2024-05-03 12:09:23.583625] Completed epoch 12 with training loss 0.41511062, validation loss 0.53044683
Validation loss improved to 0.53044683. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
[2024-05-03 12:10:16.981477] Completed epoch 13 with training loss 0.41391191, validation loss 0.50421149
Validation loss improved to 0.50421149. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
[2024-05-03 12:11:10.301631] Completed epoch 14 with training loss 0.41512406, validation loss 0.50084156
Validation loss improved to 0.50084156. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.22it/s]
[2024-05-03 12:12:05.502702] Completed epoch 15 with training loss 0.41256812, validation loss 0.51939058
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
[2024-05-03 12:13:00.340159] Completed epoch 16 with training loss 0.41214055, validation loss 0.51545161
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-03 12:13:53.009986] Completed epoch 17 with training loss 0.41180333, validation loss 0.53679717
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-03 12:14:45.920189] Completed epoch 18 with training loss 0.40827265, validation loss 0.55217409
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-03 12:15:38.812994] Completed epoch 19 with training loss 0.41025606, validation loss 0.54582381
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.36it/s]
[2024-05-03 12:16:32.461495] Completed epoch 20 with training loss 0.40774557, validation loss 0.51761854
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.45it/s]
[2024-05-03 12:17:26.345605] Completed epoch 21 with training loss 0.40708104, validation loss 0.53971648
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.40it/s]
[2024-05-03 12:18:21.146994] Completed epoch 22 with training loss 0.40380394, validation loss 0.50538218
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.43it/s]
[2024-05-03 12:19:15.405760] Completed epoch 23 with training loss 0.40765908, validation loss 0.49796593
Validation loss improved to 0.49796593. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.32it/s]
[2024-05-03 12:20:08.933662] Completed epoch 24 with training loss 0.40350404, validation loss 0.49462998
Validation loss improved to 0.49462998. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.95it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.42it/s]
[2024-05-03 12:21:02.768119] Completed epoch 25 with training loss 0.40379453, validation loss 0.51645631
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.33it/s]
[2024-05-03 12:21:57.140207] Completed epoch 26 with training loss 0.40188640, validation loss 0.48724911
Validation loss improved to 0.48724911. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:48<00:00,  1.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.41it/s]
[2024-05-03 12:22:51.897624] Completed epoch 27 with training loss 0.40263230, validation loss 0.55444866
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
[2024-05-03 12:23:45.070868] Completed epoch 28 with training loss 0.40174523, validation loss 0.57130253
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-03 12:24:38.522831] Completed epoch 29 with training loss 0.40087989, validation loss 0.50853348
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.34it/s]
[2024-05-03 12:25:32.333236] Completed epoch 30 with training loss 0.39877826, validation loss 0.51049143
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
[2024-05-03 12:26:25.963713] Completed epoch 31 with training loss 0.39727166, validation loss 0.53262198
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-03 12:27:19.144531] Completed epoch 32 with training loss 0.39887607, validation loss 0.50671685
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
[2024-05-03 12:28:12.132009] Completed epoch 33 with training loss 0.39428595, validation loss 0.51482642
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:47<00:00,  1.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-03 12:29:06.313831] Completed epoch 34 with training loss 0.39268249, validation loss 0.50976002
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-03 12:29:58.984914] Completed epoch 35 with training loss 0.39335704, validation loss 0.52480960
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.98it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
[2024-05-03 12:30:51.720329] Completed epoch 36 with training loss 0.39329740, validation loss 0.47915348
Validation loss improved to 0.47915348. Model saved.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.99it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.38it/s]
[2024-05-03 12:31:44.653031] Completed epoch 37 with training loss 0.39384893, validation loss 0.52553630
No improvement in validation loss. 1 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.97it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
[2024-05-03 12:32:37.490104] Completed epoch 38 with training loss 0.39110643, validation loss 0.49174047
No improvement in validation loss. 2 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:46<00:00,  1.96it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-03 12:33:30.920844] Completed epoch 39 with training loss 0.38970065, validation loss 0.50889462
No improvement in validation loss. 3 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.03it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-03 12:34:22.634804] Completed epoch 40 with training loss 0.38868669, validation loss 0.50876194
No improvement in validation loss. 4 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.04it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
[2024-05-03 12:35:13.951909] Completed epoch 41 with training loss 0.38771927, validation loss 0.52325362
No improvement in validation loss. 5 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.04it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
[2024-05-03 12:36:05.450538] Completed epoch 42 with training loss 0.38920215, validation loss 0.51783639
No improvement in validation loss. 6 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.04it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
[2024-05-03 12:36:56.845846] Completed epoch 43 with training loss 0.38853744, validation loss 0.55582452
No improvement in validation loss. 7 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:44<00:00,  2.05it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
[2024-05-03 12:37:48.079705] Completed epoch 44 with training loss 0.38629317, validation loss 0.52315962
No improvement in validation loss. 8 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.02it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
[2024-05-03 12:38:39.879855] Completed epoch 45 with training loss 0.38561618, validation loss 0.52709818
No improvement in validation loss. 9 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:44<00:00,  2.05it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
[2024-05-03 12:39:31.146897] Completed epoch 46 with training loss 0.38071805, validation loss 0.52486867
No improvement in validation loss. 10 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.04it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
[2024-05-03 12:40:22.819170] Completed epoch 47 with training loss 0.38133514, validation loss 0.50297087
No improvement in validation loss. 11 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:44<00:00,  2.05it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
[2024-05-03 12:41:13.904856] Completed epoch 48 with training loss 0.38362661, validation loss 0.52792907
No improvement in validation loss. 12 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:44<00:00,  2.05it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
[2024-05-03 12:42:05.213496] Completed epoch 49 with training loss 0.37950292, validation loss 0.51787710
No improvement in validation loss. 13 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:44<00:00,  2.05it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
[2024-05-03 12:42:56.344868] Completed epoch 50 with training loss 0.37908927, validation loss 0.52853423
No improvement in validation loss. 14 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:44<00:00,  2.05it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
[2024-05-03 12:43:47.422836] Completed epoch 51 with training loss 0.38233322, validation loss 0.57559288
No improvement in validation loss. 15 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:45<00:00,  2.03it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.59it/s]
[2024-05-03 12:44:39.034344] Completed epoch 52 with training loss 0.37836424, validation loss 0.49531162
No improvement in validation loss. 16 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:44<00:00,  2.06it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
[2024-05-03 12:45:29.900216] Completed epoch 53 with training loss 0.37696713, validation loss 0.53763485
No improvement in validation loss. 17 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:44<00:00,  2.05it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.59it/s]
[2024-05-03 12:46:21.034301] Completed epoch 54 with training loss 0.37627149, validation loss 0.53812683
No improvement in validation loss. 18 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:44<00:00,  2.07it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.59it/s]
[2024-05-03 12:47:11.623353] Completed epoch 55 with training loss 0.37668973, validation loss 0.55982792
No improvement in validation loss. 19 epochs without improvement.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 92/92 [00:44<00:00,  2.07it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.54it/s]
[2024-05-03 12:48:02.489050] Completed epoch 56 with training loss 0.37218001, validation loss 0.54600465
No improvement in validation loss. 20 epochs without improvement.
Early stopping due to no improvement in validation loss.

Plot Validation and Loss Values from Training
  Epoch with best Validation Loss:   36, 0.4792
Generate AUROC/AUPRC for Each Intermediate Model

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0000.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:05<00:00,  2.83it/s]
Loss: 0.5844770893454552
AUROC: 0.8407452623863342
AUPRC: 0.6856679666427512
Sensitivity: 0.7868020304568528
Specificity: 0.750351617440225
Threshold: 0.14
Accuracy:  0.7610531544957775

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.57it/s]
Loss: 0.547472302583938
AUROC: 0.8266157183937258
AUPRC: 0.6633645058291793
Sensitivity: 0.7426564495530013
Specificity: 0.7664684354986276
Threshold: 0.14
Accuracy:  0.7601886156955204

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0001.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.602848719805479
AUROC: 0.8427443057013191
AUPRC: 0.6956593906116854
Sensitivity: 0.7478849407783418
Specificity: 0.7805907172995781
Threshold: 0.12
Accuracy:  0.7709885742672627

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.5618436238233079
AUROC: 0.8315268765942331
AUPRC: 0.6773657443689854
Sensitivity: 0.7669220945083014
Specificity: 0.7470265324794144
Threshold: 0.11
Accuracy:  0.7522734927585045

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0002.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
Loss: 0.5774902794510126
AUROC: 0.8435010863848491
AUPRC: 0.7001979044701769
Sensitivity: 0.7800338409475466
Specificity: 0.7587904360056259
Threshold: 0.12
Accuracy:  0.7650273224043715

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.5423089075595775
AUROC: 0.8333480852843884
AUPRC: 0.6806259338090793
Sensitivity: 0.7490421455938697
Specificity: 0.7666971637694419
Threshold: 0.12
Accuracy:  0.7620410912765241

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0003.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
Loss: 0.584593279287219
AUROC: 0.8443839971823008
AUPRC: 0.7016659736728726
Sensitivity: 0.7766497461928934
Specificity: 0.7587904360056259
Threshold: 0.11
Accuracy:  0.764033780427223

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.5484770133774332
AUROC: 0.8353293745523294
AUPRC: 0.6836933738974432
Sensitivity: 0.7496807151979565
Specificity: 0.7669258920402562
Threshold: 0.11
Accuracy:  0.7623779050185248

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0004.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.57it/s]
Loss: 0.6068016141653061
AUROC: 0.8438425896178257
AUPRC: 0.7032448475121894
Sensitivity: 0.7495769881556683
Specificity: 0.7749648382559775
Threshold: 0.1
Accuracy:  0.767511177347243

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.567157581131509
AUROC: 0.8352808829904456
AUPRC: 0.6844713727338096
Sensitivity: 0.7598978288633461
Specificity: 0.7564043915827996
Threshold: 0.09
Accuracy:  0.7573256988885146

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0005.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
Loss: 0.5894291792064905
AUROC: 0.8446255482495282
AUPRC: 0.7028652099339788
Sensitivity: 0.7766497461928934
Specificity: 0.7559774964838256
Threshold: 0.1
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.5522228346226064
AUROC: 0.8363954586191705
AUPRC: 0.6841022376487031
Sensitivity: 0.7535121328224776
Specificity: 0.7653247941445562
Threshold: 0.1
Accuracy:  0.7622094981475244

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0006.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.32it/s]
Loss: 0.5577664747834206
AUROC: 0.8430667704265338
AUPRC: 0.7003401161849515
Sensitivity: 0.7698815566835872
Specificity: 0.7616033755274262
Threshold: 0.12
Accuracy:  0.764033780427223

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.5277804155299004
AUROC: 0.8347081859598817
AUPRC: 0.6822183068767055
Sensitivity: 0.7515964240102171
Specificity: 0.7680695333943275
Threshold: 0.12
Accuracy:  0.7637251599865275

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0007.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
Loss: 0.5527222771197557
AUROC: 0.8433987544056297
AUPRC: 0.6986281895488909
Sensitivity: 0.766497461928934
Specificity: 0.7665260196905767
Threshold: 0.13
Accuracy:  0.7665176353700944

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.59it/s]
Loss: 0.5190325743974523
AUROC: 0.8352045672040467
AUPRC: 0.6815824751906093
Sensitivity: 0.7509578544061303
Specificity: 0.7737877401646843
Threshold: 0.13
Accuracy:  0.7677669248905356

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0008.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
Loss: 0.5667037554085255
AUROC: 0.843542733120578
AUPRC: 0.6984996583899046
Sensitivity: 0.7631133671742809
Specificity: 0.7665260196905767
Threshold: 0.12
Accuracy:  0.7655240933929458

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.57it/s]
Loss: 0.532520204782486
AUROC: 0.8359578660908441
AUPRC: 0.6817055458257932
Sensitivity: 0.7477650063856961
Specificity: 0.7763037511436414
Threshold: 0.12
Accuracy:  0.7687773661165376

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0009.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.58it/s]
Loss: 0.5330205019563437
AUROC: 0.8429810971416061
AUPRC: 0.6952402438559193
Sensitivity: 0.7580372250423012
Specificity: 0.770042194092827
Threshold: 0.15
Accuracy:  0.7665176353700944

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.56it/s]
Loss: 0.5049185705311755
AUROC: 0.8348740358650604
AUPRC: 0.6775837163390699
Sensitivity: 0.7624521072796935
Specificity: 0.7586916742909423
Threshold: 0.14
Accuracy:  0.7596833950825194

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0010.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.55it/s]
Loss: 0.5406437069177628
AUROC: 0.8422278861782813
AUPRC: 0.6958820784878188
Sensitivity: 0.7648054145516074
Specificity: 0.760196905766526
Threshold: 0.14
Accuracy:  0.7615499254843517

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.57it/s]
Loss: 0.509822280800089
AUROC: 0.834572789339802
AUPRC: 0.6782483465883506
Sensitivity: 0.7528735632183908
Specificity: 0.7676120768526989
Threshold: 0.14
Accuracy:  0.7637251599865275

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0011.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.56it/s]
Loss: 0.5405218414962292
AUROC: 0.8426586324163912
AUPRC: 0.6942438478039787
Sensitivity: 0.7631133671742809
Specificity: 0.7616033755274262
Threshold: 0.14
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.58it/s]
Loss: 0.510633629053197
AUROC: 0.8348108653815819
AUPRC: 0.6770787987296146
Sensitivity: 0.7701149425287356
Specificity: 0.7488563586459286
Threshold: 0.13
Accuracy:  0.754462782081509

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0012.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
Loss: 0.5340249184519053
AUROC: 0.8426860002712986
AUPRC: 0.6920981792424613
Sensitivity: 0.7563451776649747
Specificity: 0.7679324894514767
Threshold: 0.15
Accuracy:  0.7645305514157973

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.5039110339068352
AUROC: 0.8347108150204658
AUPRC: 0.6744878465963001
Sensitivity: 0.7656449553001277
Specificity: 0.7573193046660567
Threshold: 0.14
Accuracy:  0.7595149882115191

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0013.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 0.5074657294899225
AUROC: 0.8417102767485085
AUPRC: 0.6887683125641609
Sensitivity: 0.7749576988155669
Specificity: 0.7531645569620253
Threshold: 0.18
Accuracy:  0.7595628415300546

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.56it/s]
Loss: 0.48109231730724905
AUROC: 0.8337260857728095
AUPRC: 0.6715207877274341
Sensitivity: 0.7515964240102171
Specificity: 0.7687557182067704
Threshold: 0.18
Accuracy:  0.7642303805995284

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0014.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
Loss: 0.5027642734348774
AUROC: 0.84161746402317
AUPRC: 0.6852406381555297
Sensitivity: 0.766497461928934
Specificity: 0.7623066104078763
Threshold: 0.19
Accuracy:  0.7635370094386488

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.47593095010899483
AUROC: 0.8333911726661829
AUPRC: 0.6682940642201861
Sensitivity: 0.7656449553001277
Specificity: 0.7511436413540714
Threshold: 0.18
Accuracy:  0.7549680026945099

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0015.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
Loss: 0.5247744806110859
AUROC: 0.8419506379090008
AUPRC: 0.686627575170089
Sensitivity: 0.751269035532995
Specificity: 0.7756680731364276
Threshold: 0.16
Accuracy:  0.7685047193243915

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.56it/s]
Loss: 0.4962023915128505
AUROC: 0.833867470808664
AUPRC: 0.6702154521413405
Sensitivity: 0.7567049808429118
Specificity: 0.7621225983531564
Threshold: 0.15
Accuracy:  0.7606938363085214

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0016.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 0.5146491136401892
AUROC: 0.8417126565619787
AUPRC: 0.6852700005341095
Sensitivity: 0.7648054145516074
Specificity: 0.7651195499296765
Threshold: 0.17
Accuracy:  0.7650273224043715

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.4885922001397356
AUROC: 0.8337377704865165
AUPRC: 0.6679320295899249
Sensitivity: 0.7675606641123882
Specificity: 0.7543458371454712
Threshold: 0.16
Accuracy:  0.7578309195015157

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0017.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
Loss: 0.5372134894132614
AUROC: 0.8419625369763519
AUPRC: 0.6848132477297619
Sensitivity: 0.7732656514382402
Specificity: 0.7566807313642757
Threshold: 0.14
Accuracy:  0.7615499254843517

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.5085675161569676
AUROC: 0.8343344942096401
AUPRC: 0.6686279592943756
Sensitivity: 0.7496807151979565
Specificity: 0.770128087831656
Threshold: 0.14
Accuracy:  0.7647356012125295

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0018.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
Loss: 0.5509985275566578
AUROC: 0.8415448797123282
AUPRC: 0.684265399558694
Sensitivity: 0.7648054145516074
Specificity: 0.7644163150492265
Threshold: 0.13
Accuracy:  0.7645305514157973

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.50it/s]
Loss: 0.5207456638838383
AUROC: 0.8341679140098548
AUPRC: 0.6683467735064752
Sensitivity: 0.768837803320562
Specificity: 0.7506861848124429
Threshold: 0.12
Accuracy:  0.755473223307511

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0019.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.47it/s]
Loss: 0.5476177651435137
AUROC: 0.8411141334742183
AUPRC: 0.67912770412633
Sensitivity: 0.7614213197969543
Specificity: 0.7672292545710268
Threshold: 0.14
Accuracy:  0.7655240933929458

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.5158806554180511
AUROC: 0.8338474607364408
AUPRC: 0.6637568235406238
Sensitivity: 0.7630906768837803
Specificity: 0.755946935041171
Threshold: 0.13
Accuracy:  0.7578309195015157

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0020.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 0.5182623229920864
AUROC: 0.8398183250396833
AUPRC: 0.678578301820897
Sensitivity: 0.7715736040609137
Specificity: 0.7573839662447257
Threshold: 0.16
Accuracy:  0.7615499254843517

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.56it/s]
Loss: 0.49079173105828305
AUROC: 0.8328796743236595
AUPRC: 0.6646543438173373
Sensitivity: 0.7503192848020435
Specificity: 0.7705855443732845
Threshold: 0.16
Accuracy:  0.7652408218255304

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0021.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
Loss: 0.5396119859069586
AUROC: 0.8399182772054327
AUPRC: 0.6783211460553995
Sensitivity: 0.7631133671742809
Specificity: 0.7644163150492265
Threshold: 0.14
Accuracy:  0.764033780427223

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.47it/s]
Loss: 0.5090579621969386
AUROC: 0.8336520338996914
AUPRC: 0.6653320344219272
Sensitivity: 0.7637292464878672
Specificity: 0.7602927721866423
Threshold: 0.13
Accuracy:  0.7611990569215223

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0022.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.504480505362153
AUROC: 0.8391484075478165
AUPRC: 0.673107448047415
Sensitivity: 0.754653130287648
Specificity: 0.770745428973277
Threshold: 0.18
Accuracy:  0.7660208643815202

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.4784105058680189
AUROC: 0.8318885184834643
AUPRC: 0.6603377212164538
Sensitivity: 0.756066411238825
Specificity: 0.7648673376029277
Threshold: 0.17
Accuracy:  0.762546311889525

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0023.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 0.49821336567401886
AUROC: 0.8366638822849064
AUPRC: 0.6642833226273098
Sensitivity: 0.754653130287648
Specificity: 0.770042194092827
Threshold: 0.2
Accuracy:  0.7655240933929458

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.47165350489159846
AUROC: 0.8300242954409753
AUPRC: 0.6537794720597042
Sensitivity: 0.7496807151979565
Specificity: 0.7618938700823422
Threshold: 0.19
Accuracy:  0.7586729538565173

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0024.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 0.4973024893552065
AUROC: 0.83745873998396
AUPRC: 0.669748616927376
Sensitivity: 0.7631133671742809
Specificity: 0.7658227848101266
Threshold: 0.19
Accuracy:  0.7650273224043715

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.4696605884014292
AUROC: 0.8312416235208613
AUPRC: 0.6591411963255533
Sensitivity: 0.7579821200510856
Specificity: 0.757548032936871
Threshold: 0.18
Accuracy:  0.7576625126305153

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0025.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
Loss: 0.5150814540684223
AUROC: 0.8365793989067136
AUPRC: 0.6635666825127221
Sensitivity: 0.7698815566835872
Specificity: 0.7531645569620253
Threshold: 0.16
Accuracy:  0.7580725285643318

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.48689321000525293
AUROC: 0.8311780878900796
AUPRC: 0.6558675257481387
Sensitivity: 0.7694763729246488
Specificity: 0.7483989021043
Threshold: 0.15
Accuracy:  0.7539575614685079

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0026.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
Loss: 0.4860228952020407
AUROC: 0.8333963983902943
AUPRC: 0.6552751678970392
Sensitivity: 0.7614213197969543
Specificity: 0.7679324894514767
Threshold: 0.22
Accuracy:  0.7660208643815202

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.4610270899026952
AUROC: 0.8277600900424038
AUPRC: 0.6485261513779451
Sensitivity: 0.7452107279693486
Specificity: 0.7623513266239708
Threshold: 0.21
Accuracy:  0.7578309195015157

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0027.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
Loss: 0.555122883990407
AUROC: 0.8370375129997312
AUPRC: 0.6652478402205896
Sensitivity: 0.7681895093062606
Specificity: 0.760196905766526
Threshold: 0.12
Accuracy:  0.7625434674615003

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.524343766747637
AUROC: 0.8310659146384924
AUPRC: 0.6585312121178359
Sensitivity: 0.768837803320562
Specificity: 0.7483989021043
Threshold: 0.11
Accuracy:  0.7537891545975076

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0028.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.44it/s]
Loss: 0.5728144589811563
AUROC: 0.8363366579327512
AUPRC: 0.6656607340965686
Sensitivity: 0.7580372250423012
Specificity: 0.7623066104078763
Threshold: 0.11
Accuracy:  0.7610531544957775

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.540153332213138
AUROC: 0.8306459952396475
AUPRC: 0.6595394018226933
Sensitivity: 0.7618135376756067
Specificity: 0.7548032936870998
Threshold: 0.1
Accuracy:  0.7566520714045133

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0029.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
Loss: 0.506429536268115
AUROC: 0.8315669167850623
AUPRC: 0.6503869447956923
Sensitivity: 0.7580372250423012
Specificity: 0.7644163150492265
Threshold: 0.18
Accuracy:  0.7625434674615003

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.52it/s]
Loss: 0.47887313492754674
AUROC: 0.8266559576265543
AUPRC: 0.6454467646172034
Sensitivity: 0.7541507024265645
Specificity: 0.7561756633119854
Threshold: 0.17
Accuracy:  0.7556416301785113

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0030.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 0.5103804506361485
AUROC: 0.8290972653563413
AUPRC: 0.6420941839035903
Sensitivity: 0.7563451776649747
Specificity: 0.7644163150492265
Threshold: 0.18
Accuracy:  0.762046696472926

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.48100158255150977
AUROC: 0.8248138625106478
AUPRC: 0.638649571815312
Sensitivity: 0.7484035759897829
Specificity: 0.757548032936871
Threshold: 0.17
Accuracy:  0.7551364095655103

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0031.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5304349008947611
AUROC: 0.8322029219349787
AUPRC: 0.6509523183026548
Sensitivity: 0.7495769881556683
Specificity: 0.770042194092827
Threshold: 0.15
Accuracy:  0.764033780427223

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.5010610929829009
AUROC: 0.8266959777710007
AUPRC: 0.6449995111996677
Sensitivity: 0.7452107279693486
Specificity: 0.7639524245196706
Threshold: 0.14
Accuracy:  0.759009767598518

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0032.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5052582994103432
AUROC: 0.8283773717815998
AUPRC: 0.6443270120483939
Sensitivity: 0.7648054145516074
Specificity: 0.7538677918424754
Threshold: 0.18
Accuracy:  0.7570789865871833

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.4764780475104109
AUROC: 0.8235400826576647
AUPRC: 0.638154860799814
Sensitivity: 0.7535121328224776
Specificity: 0.7445105215004575
Threshold: 0.17
Accuracy:  0.7468844728864937

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0033.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5126123838126659
AUROC: 0.8282357728801217
AUPRC: 0.640550819835904
Sensitivity: 0.7529610829103215
Specificity: 0.7616033755274262
Threshold: 0.17
Accuracy:  0.7590660705414803

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.4841412071217882
AUROC: 0.8232155397344533
AUPRC: 0.6360646402469321
Sensitivity: 0.7432950191570882
Specificity: 0.7541171088746569
Threshold: 0.16
Accuracy:  0.7512630515325025

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0034.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5099312514066696
AUROC: 0.8250492026434968
AUPRC: 0.6355958015938763
Sensitivity: 0.7529610829103215
Specificity: 0.760196905766526
Threshold: 0.18
Accuracy:  0.7580725285643318

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.4800201343729141
AUROC: 0.8204640817743004
AUPRC: 0.6305929487162063
Sensitivity: 0.7407407407407407
Specificity: 0.7534309240622141
Threshold: 0.17
Accuracy:  0.7500842034355002

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0035.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 0.5244469940662384
AUROC: 0.8237986106648961
AUPRC: 0.6349141309295416
Sensitivity: 0.7529610829103215
Specificity: 0.7538677918424754
Threshold: 0.16
Accuracy:  0.7536015896671634

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.4916925972446482
AUROC: 0.8203995237310693
AUPRC: 0.6286846783645803
Sensitivity: 0.7509578544061303
Specificity: 0.7431381518755719
Threshold: 0.15
Accuracy:  0.7452004041764904

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0036.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.48205018043518066
AUROC: 0.823896183017175
AUPRC: 0.6330752455311649
Sensitivity: 0.7529610829103215
Specificity: 0.7616033755274262
Threshold: 0.24
Accuracy:  0.7590660705414803

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.4546983333978247
AUROC: 0.8189252049790903
AUPRC: 0.6276385490588017
Sensitivity: 0.7490421455938697
Specificity: 0.7397072278133577
Threshold: 0.22
Accuracy:  0.7421690804984843

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0037.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.49it/s]
Loss: 0.5214580055326223
AUROC: 0.8250289742289999
AUPRC: 0.635494529080868
Sensitivity: 0.7580372250423012
Specificity: 0.7587904360056259
Threshold: 0.16
Accuracy:  0.7585692995529061

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.49202376540671006
AUROC: 0.8194136260120423
AUPRC: 0.6285687458499557
Sensitivity: 0.7452107279693486
Specificity: 0.7472552607502287
Threshold: 0.15
Accuracy:  0.7467160660154935

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0038.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 0.4910655487328768
AUROC: 0.8210475462933216
AUPRC: 0.6261055839755668
Sensitivity: 0.7461928934010152
Specificity: 0.7616033755274262
Threshold: 0.22
Accuracy:  0.7570789865871833

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.46391822651345677
AUROC: 0.8155788490323305
AUPRC: 0.6196883006948559
Sensitivity: 0.7464878671775224
Specificity: 0.7408508691674291
Threshold: 0.2
Accuracy:  0.7423374873694847

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0039.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
Loss: 0.5084156692028046
AUROC: 0.8240377819186532
AUPRC: 0.633305408680411
Sensitivity: 0.7529610829103215
Specificity: 0.7651195499296765
Threshold: 0.18
Accuracy:  0.7615499254843517

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.48043045306459387
AUROC: 0.818334542701202
AUPRC: 0.6269777993836528
Sensitivity: 0.7541507024265645
Specificity: 0.7387923147301007
Threshold: 0.16
Accuracy:  0.7428427079824856

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0040.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
Loss: 0.5101432502269745
AUROC: 0.8237795721571344
AUPRC: 0.6358937025692513
Sensitivity: 0.7597292724196277
Specificity: 0.7447257383966245
Threshold: 0.17
Accuracy:  0.7491306507699951

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.48066261600940785
AUROC: 0.8178410096060031
AUPRC: 0.6279375550273513
Sensitivity: 0.7509578544061303
Specificity: 0.7435956084172004
Threshold: 0.16
Accuracy:  0.745537217918491

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0041.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5223022401332855
AUROC: 0.8222279337745508
AUPRC: 0.6291481493343869
Sensitivity: 0.7461928934010152
Specificity: 0.7559774964838256
Threshold: 0.16
Accuracy:  0.7531048186785891

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.45it/s]
Loss: 0.4923860047091829
AUROC: 0.816084797135843
AUPRC: 0.6219455877188904
Sensitivity: 0.7426564495530013
Specificity: 0.75
Threshold: 0.15
Accuracy:  0.7480633209834961

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0042.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
Loss: 0.5194917675107718
AUROC: 0.8196577352267129
AUPRC: 0.6274198938546462
Sensitivity: 0.7648054145516074
Specificity: 0.7419127988748242
Threshold: 0.16
Accuracy:  0.7486338797814208

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.4891206206793481
AUROC: 0.8146865750818807
AUPRC: 0.620530198415634
Sensitivity: 0.7547892720306514
Specificity: 0.734903934126258
Threshold: 0.15
Accuracy:  0.7401481980464802

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0043.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5538970995694399
AUROC: 0.8225158912044475
AUPRC: 0.6324152353028798
Sensitivity: 0.739424703891709
Specificity: 0.7630098452883263
Threshold: 0.13
Accuracy:  0.7560854446100348

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.5178385221577705
AUROC: 0.8175244999234651
AUPRC: 0.6260852937603659
Sensitivity: 0.7458492975734355
Specificity: 0.7513723696248856
Threshold: 0.12
Accuracy:  0.7499157965644998

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0044.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5247442424297333
AUROC: 0.8201301282005518
AUPRC: 0.6283489156685629
Sensitivity: 0.7495769881556683
Specificity: 0.7545710267229254
Threshold: 0.16
Accuracy:  0.7531048186785891

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.4912497515374042
AUROC: 0.8158160487205823
AUPRC: 0.6237080378943033
Sensitivity: 0.7413793103448276
Specificity: 0.7536596523330283
Threshold: 0.15
Accuracy:  0.7504210171775009

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0045.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5255499687045813
AUROC: 0.8142222412607301
AUPRC: 0.6157237721361577
Sensitivity: 0.7411167512690355
Specificity: 0.7468354430379747
Threshold: 0.17
Accuracy:  0.7451564828614009

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.49156803241435515
AUROC: 0.8095404080769415
AUPRC: 0.6105778847397814
Sensitivity: 0.7318007662835249
Specificity: 0.7511436413540714
Threshold: 0.16
Accuracy:  0.7460424385314921

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0046.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 0.5242548193782568
AUROC: 0.8212783881999328
AUPRC: 0.629265968874731
Sensitivity: 0.7631133671742809
Specificity: 0.7433192686357243
Threshold: 0.15
Accuracy:  0.7491306507699951

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.49187057132416584
AUROC: 0.8170534599021522
AUPRC: 0.6270373376076233
Sensitivity: 0.7477650063856961
Specificity: 0.7447392497712717
Threshold: 0.14
Accuracy:  0.745537217918491

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0047.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.52it/s]
Loss: 0.504784444347024
AUROC: 0.8162177148555096
AUPRC: 0.6200110005386212
Sensitivity: 0.7563451776649747
Specificity: 0.7447257383966245
Threshold: 0.19
Accuracy:  0.7481371087928465

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.473761167297972
AUROC: 0.8117453865829105
AUPRC: 0.6152815212244587
Sensitivity: 0.7343550446998723
Specificity: 0.7504574565416285
Threshold: 0.18
Accuracy:  0.7462108454024924

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0048.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5258549749851227
AUROC: 0.8128883558106716
AUPRC: 0.6136510325256833
Sensitivity: 0.7343485617597293
Specificity: 0.7517580872011251
Threshold: 0.17
Accuracy:  0.7466467958271237

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.56it/s]
Loss: 0.4933394878468615
AUROC: 0.8083572577846484
AUPRC: 0.6097793286356433
Sensitivity: 0.7401021711366539
Specificity: 0.7342177493138152
Threshold: 0.15
Accuracy:  0.7357696194004716

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0049.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5171806942671537
AUROC: 0.8103276765167147
AUPRC: 0.6114454009320143
Sensitivity: 0.7360406091370558
Specificity: 0.7426160337552743
Threshold: 0.18
Accuracy:  0.7406855439642325

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.48375200781416383
AUROC: 0.8065383860372345
AUPRC: 0.6072437628749981
Sensitivity: 0.7496807151979565
Specificity: 0.7291857273559011
Threshold: 0.16
Accuracy:  0.7345907713034692

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0050.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:07<00:00,  2.27it/s]
Loss: 0.5274684373289347
AUROC: 0.8137760262350637
AUPRC: 0.6177390372571877
Sensitivity: 0.7377326565143824
Specificity: 0.7545710267229254
Threshold: 0.16
Accuracy:  0.7496274217585693

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.4931253299434134
AUROC: 0.8106239461848825
AUPRC: 0.6168177154132323
Sensitivity: 0.7515964240102171
Specificity: 0.7323879231473011
Threshold: 0.14
Accuracy:  0.737453688110475

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0051.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.48it/s]
Loss: 0.5755063854157925
AUROC: 0.8184868669993645
AUPRC: 0.62516613177793
Sensitivity: 0.7428087986463621
Specificity: 0.7475386779184248
Threshold: 0.11
Accuracy:  0.7461500248385494

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.52it/s]
Loss: 0.5363859756195799
AUROC: 0.814248982553554
AUPRC: 0.6239360909348971
Sensitivity: 0.7503192848020435
Specificity: 0.7401646843549863
Threshold: 0.1
Accuracy:  0.7428427079824856

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0052.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.50it/s]
Loss: 0.49694568663835526
AUROC: 0.8152431812394544
AUPRC: 0.6174498373579633
Sensitivity: 0.7495769881556683
Specificity: 0.7362869198312236
Threshold: 0.2
Accuracy:  0.7401887729756582

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.55it/s]
Loss: 0.46541004485272347
AUROC: 0.8108732687636053
AUPRC: 0.6160013854446265
Sensitivity: 0.7407407407407407
Specificity: 0.739935956084172
Threshold: 0.19
Accuracy:  0.7401481980464802

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0053.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.51it/s]
Loss: 0.5374348815530539
AUROC: 0.8113212486405316
AUPRC: 0.6104487766961042
Sensitivity: 0.7478849407783418
Specificity: 0.7320675105485233
Threshold: 0.14
Accuracy:  0.7367113760556383

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.5008699887610496
AUROC: 0.8081608085354498
AUPRC: 0.610764069545462
Sensitivity: 0.7298850574712644
Specificity: 0.7477127172918573
Threshold: 0.14
Accuracy:  0.743011114853486

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0054.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.540806507691741
AUROC: 0.8123421886192561
AUPRC: 0.6128478212211692
Sensitivity: 0.7411167512690355
Specificity: 0.7383966244725738
Threshold: 0.14
Accuracy:  0.7391952309985097

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:19<00:00,  2.43it/s]
Loss: 0.5032344520726102
AUROC: 0.8088369152823202
AUPRC: 0.6133429825397978
Sensitivity: 0.7394636015325671
Specificity: 0.7353613906678865
Threshold: 0.13
Accuracy:  0.7364432468844729

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0055.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.46it/s]
Loss: 0.5577088929712772
AUROC: 0.8105466193559748
AUPRC: 0.6134663055012833
Sensitivity: 0.7292724196277496
Specificity: 0.749648382559775
Threshold: 0.13
Accuracy:  0.7436661698956781

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.49it/s]
Loss: 0.5181910341724436
AUROC: 0.8087522741374051
AUPRC: 0.6157730147941767
Sensitivity: 0.7305236270753512
Specificity: 0.744053064958829
Threshold: 0.12
Accuracy:  0.7404850117884809

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0056.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:06<00:00,  2.53it/s]
Loss: 0.5442991890013218
AUROC: 0.8037927087274899
AUPRC: 0.6006607281450171
Sensitivity: 0.7292724196277496
Specificity: 0.7433192686357243
Threshold: 0.15
Accuracy:  0.7391952309985097

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.54it/s]
Loss: 0.5057525324060562
AUROC: 0.8021553038668222
AUPRC: 0.6006570882358487
Sensitivity: 0.7260536398467433
Specificity: 0.7381061299176578
Threshold: 0.14
Accuracy:  0.7349275850454698


Plot AUROC/AUPRC for Each Intermediate Model
  Epoch with best Validation Loss:      36, 0.4792
  Epoch with best model Test AUROC:      5, 0.8364
  Epoch with best model Test Accuracy:   8, 0.7688

AUROC/AUPRC Plots - Best Model Based on Validation Loss
  Epoch with best Validation Loss:   36, 0.4792
  Best Model Based on Validation Loss:
    ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0036.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.4546983333978247
AUROC: 0.8189252049790903
AUPRC: 0.6276385490588017
Sensitivity: 0.7490421455938697
Specificity: 0.7397072278133577
Threshold: 0.22
Accuracy:  0.7421690804984843
<Figure size 640x480 with 0 Axes>
best_model_val_test_auroc: 0.8189252049790903
best_model_val_test_auprc: 0.6276385490588017

AUROC/AUPRC Plots - Best Model Based on Model AUROC
  Epoch with best model Test AUROC:   5, 0.8364
  Best Model Based on Model AUROC:
    ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_128_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_8cb83d71_0005.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:18<00:00,  2.53it/s]
Loss: 0.5522228346226064
AUROC: 0.8363954586191705
AUPRC: 0.6841022376487031
Sensitivity: 0.7535121328224776
Specificity: 0.7653247941445562
Threshold: 0.1
Accuracy:  0.7622094981475244
best_model_auroc_test_auroc: 0.8363954586191705
best_model_auroc_test_auprc: 0.6841022376487031

Total Processing Time: 4525.5950 sec

Balance Labels¶

In [114]:
RUN_ME = True

if MULTI_RUN and RUN_ME:
    run_experiment(
        experimentNamePrefix=None, 
        useAbp=True, 
        useEeg=False, 
        useEcg=False,
        nResiduals=12, 
        skip_connection=False,
        batch_size=64,
        learning_rate=1e-4,
        weight_decay=0.0,
        balance_labels=True,
        #pos_weight=2.0,
        pos_weight=None,
        max_epochs=200,
        patience=20,
        device=device
    )
Experiment Setup
  name:              ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b
  prediction_window: 003
  max_cases:         _ALL
  use_abp:           True
  use_eeg:           False
  use_ecg:           False
  n_residuals:       12
  skip_connection:   False
  batch_size:        64
  learning_rate:     0.0001
  weight_decay:      0.0
  balance_labels:    True
  pos_weight:        4.0
  max_epochs:        200
  patience:          20
  device:            mps

Model Architecture
HypotensionCNN(
  (abpResiduals): Sequential(
    (0): ResidualBlock(
      (bn1): BatchNorm1d(1, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(1, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (1): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (2): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (3): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (4): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 2, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (5): ResidualBlock(
      (bn1): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
      (residualConv): Conv1d(2, 4, kernel_size=(15,), stride=(1,), padding=(7,), bias=False)
    )
    (6): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (7): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (8): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (9): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 4, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
    (10): ResidualBlock(
      (bn1): BatchNorm1d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(4, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (downsample): MaxPool1d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (11): ResidualBlock(
      (bn1): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu): ReLU()
      (dropout): Dropout(p=0.5, inplace=False)
      (conv1): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (bn2): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (conv2): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
      (residualConv): Conv1d(6, 6, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
    )
  )
  (abpFc): Linear(in_features=2814, out_features=32, bias=True)
  (fullLinear1): Linear(in_features=32, out_features=16, bias=True)
  (fullLinear2): Linear(in_features=16, out_features=1, bias=True)
  (sigmoid): Sigmoid()
)

Training Loop
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.72it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.60it/s]
[2024-05-03 13:14:08.950055] Completed epoch 0 with training loss 0.97923893, validation loss 1.49352431
Validation loss improved to 1.49352431. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:48<00:00,  3.81it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
[2024-05-03 13:15:03.904259] Completed epoch 1 with training loss 0.91000813, validation loss 1.47077739
Validation loss improved to 1.47077739. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:48<00:00,  3.82it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.53it/s]
[2024-05-03 13:15:59.191996] Completed epoch 2 with training loss 0.90054578, validation loss 1.62533975
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:48<00:00,  3.80it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.65it/s]
[2024-05-03 13:16:54.571638] Completed epoch 3 with training loss 0.89497119, validation loss 1.39922380
Validation loss improved to 1.39922380. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.90it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.80it/s]
[2024-05-03 13:17:48.474853] Completed epoch 4 with training loss 0.88532209, validation loss 1.66903925
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.84it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.82it/s]
[2024-05-03 13:18:43.080274] Completed epoch 5 with training loss 0.88373053, validation loss 1.68939793
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.84it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.85it/s]
[2024-05-03 13:19:37.622493] Completed epoch 6 with training loss 0.88075405, validation loss 1.27503598
Validation loss improved to 1.27503598. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:48<00:00,  3.83it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.77it/s]
[2024-05-03 13:20:32.493352] Completed epoch 7 with training loss 0.87701946, validation loss 1.44112730
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:48<00:00,  3.81it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.75it/s]
[2024-05-03 13:21:27.537165] Completed epoch 8 with training loss 0.87544018, validation loss 1.67856264
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:49<00:00,  3.71it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.88it/s]
[2024-05-03 13:22:23.802512] Completed epoch 9 with training loss 0.86956936, validation loss 1.34997737
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:48<00:00,  3.82it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.77it/s]
[2024-05-03 13:23:18.758197] Completed epoch 10 with training loss 0.87413210, validation loss 1.33530986
No improvement in validation loss. 4 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:48<00:00,  3.77it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.74it/s]
[2024-05-03 13:24:14.295473] Completed epoch 11 with training loss 0.85939217, validation loss 1.35490429
No improvement in validation loss. 5 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:48<00:00,  3.80it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.75it/s]
[2024-05-03 13:25:09.511177] Completed epoch 12 with training loss 0.85955942, validation loss 1.24651444
Validation loss improved to 1.24651444. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:48<00:00,  3.77it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.64it/s]
[2024-05-03 13:26:05.281654] Completed epoch 13 with training loss 0.86272508, validation loss 1.17153907
Validation loss improved to 1.17153907. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:48<00:00,  3.81it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.72it/s]
[2024-05-03 13:27:00.481622] Completed epoch 14 with training loss 0.85527289, validation loss 1.26286292
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:48<00:00,  3.83it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.89it/s]
[2024-05-03 13:27:55.128922] Completed epoch 15 with training loss 0.85579193, validation loss 1.29829144
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:48<00:00,  3.77it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.71it/s]
[2024-05-03 13:28:50.810446] Completed epoch 16 with training loss 0.85479993, validation loss 1.25177288
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:48<00:00,  3.77it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.89it/s]
[2024-05-03 13:29:46.193494] Completed epoch 17 with training loss 0.84856564, validation loss 1.27535415
No improvement in validation loss. 4 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:48<00:00,  3.80it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.88it/s]
[2024-05-03 13:30:41.229194] Completed epoch 18 with training loss 0.84413320, validation loss 1.27998829
No improvement in validation loss. 5 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:48<00:00,  3.79it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.90it/s]
[2024-05-03 13:31:36.393589] Completed epoch 19 with training loss 0.84553081, validation loss 1.25094688
No improvement in validation loss. 6 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.85it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.78it/s]
[2024-05-03 13:32:30.938514] Completed epoch 20 with training loss 0.83780521, validation loss 1.35003042
No improvement in validation loss. 7 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:48<00:00,  3.80it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.90it/s]
[2024-05-03 13:33:25.909326] Completed epoch 21 with training loss 0.84039819, validation loss 1.26867032
No improvement in validation loss. 8 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.86it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.92it/s]
[2024-05-03 13:34:20.124587] Completed epoch 22 with training loss 0.83759958, validation loss 1.20621872
No improvement in validation loss. 9 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.85it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.92it/s]
[2024-05-03 13:35:14.504470] Completed epoch 23 with training loss 0.83263779, validation loss 1.18396258
No improvement in validation loss. 10 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.86it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.88it/s]
[2024-05-03 13:36:08.796227] Completed epoch 24 with training loss 0.82197654, validation loss 1.07491398
Validation loss improved to 1.07491398. Model saved.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.86it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.91it/s]
[2024-05-03 13:37:03.058962] Completed epoch 25 with training loss 0.82918745, validation loss 1.19342494
No improvement in validation loss. 1 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.87it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.91it/s]
[2024-05-03 13:37:57.182492] Completed epoch 26 with training loss 0.82610536, validation loss 1.19009328
No improvement in validation loss. 2 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.84it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.90it/s]
[2024-05-03 13:38:51.688095] Completed epoch 27 with training loss 0.82063043, validation loss 1.34440255
No improvement in validation loss. 3 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.89it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.90it/s]
[2024-05-03 13:39:45.591330] Completed epoch 28 with training loss 0.82370806, validation loss 1.29997480
No improvement in validation loss. 4 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.87it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.91it/s]
[2024-05-03 13:40:39.648386] Completed epoch 29 with training loss 0.82182318, validation loss 1.11946261
No improvement in validation loss. 5 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.90it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.88it/s]
[2024-05-03 13:41:33.458997] Completed epoch 30 with training loss 0.81617010, validation loss 1.14300942
No improvement in validation loss. 6 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.88it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.92it/s]
[2024-05-03 13:42:27.419083] Completed epoch 31 with training loss 0.81341666, validation loss 1.28463197
No improvement in validation loss. 7 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.90it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.90it/s]
[2024-05-03 13:43:21.217302] Completed epoch 32 with training loss 0.81628424, validation loss 1.22142076
No improvement in validation loss. 8 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.90it/s]
[2024-05-03 13:44:14.564075] Completed epoch 33 with training loss 0.80873978, validation loss 1.23007786
No improvement in validation loss. 9 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.95it/s]
[2024-05-03 13:45:08.009591] Completed epoch 34 with training loss 0.80997187, validation loss 1.16039026
No improvement in validation loss. 10 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.91it/s]
[2024-05-03 13:46:01.541811] Completed epoch 35 with training loss 0.80266321, validation loss 1.17455649
No improvement in validation loss. 11 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.93it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.96it/s]
[2024-05-03 13:46:54.808610] Completed epoch 36 with training loss 0.80244279, validation loss 1.08160281
No improvement in validation loss. 12 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.95it/s]
[2024-05-03 13:47:48.305537] Completed epoch 37 with training loss 0.80316812, validation loss 1.21999002
No improvement in validation loss. 13 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.96it/s]
[2024-05-03 13:48:41.859402] Completed epoch 38 with training loss 0.80060762, validation loss 1.16809368
No improvement in validation loss. 14 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.94it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.93it/s]
[2024-05-03 13:49:35.100303] Completed epoch 39 with training loss 0.79160196, validation loss 1.16658890
No improvement in validation loss. 15 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.95it/s]
[2024-05-03 13:50:28.541575] Completed epoch 40 with training loss 0.79580665, validation loss 1.13447750
No improvement in validation loss. 16 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.96it/s]
[2024-05-03 13:51:21.972621] Completed epoch 41 with training loss 0.79346192, validation loss 1.25097096
No improvement in validation loss. 17 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.91it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.96it/s]
[2024-05-03 13:52:15.494402] Completed epoch 42 with training loss 0.79520667, validation loss 1.15656114
No improvement in validation loss. 18 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:46<00:00,  3.92it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.90it/s]
[2024-05-03 13:53:08.960299] Completed epoch 43 with training loss 0.79330802, validation loss 1.22314882
No improvement in validation loss. 19 epochs without improvement.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 184/184 [00:47<00:00,  3.89it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.78it/s]
[2024-05-03 13:54:03.013459] Completed epoch 44 with training loss 0.79248136, validation loss 1.14069557
No improvement in validation loss. 20 epochs without improvement.
Early stopping due to no improvement in validation loss.

Plot Validation and Loss Values from Training
  Epoch with best Validation Loss:   24, 1.075
Generate AUROC/AUPRC for Each Intermediate Model

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0000.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:05<00:00,  5.50it/s]
Loss: 1.4882378783077002
AUROC: 0.8420113231524913
AUPRC: 0.6836242772799493
Sensitivity: 0.032148900169204735
Specificity: 0.9992967651195499
Threshold: 0.0
Accuracy:  0.7153502235469449

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.72it/s]
Loss: 1.3994177560652457
AUROC: 0.8275160986143097
AUPRC: 0.6598902009509341
Sensitivity: 0.021711366538952746
Specificity: 0.9988563586459286
Threshold: 0.0
Accuracy:  0.7411586392724823

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0001.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.80it/s]
Loss: 1.4726210348308086
AUROC: 0.8443494898869827
AUPRC: 0.6944831342845115
Sensitivity: 0.03553299492385787
Specificity: 0.9992967651195499
Threshold: 0.0
Accuracy:  0.7163437655240934

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.81it/s]
Loss: 1.3889378415000053
AUROC: 0.8326210039739712
AUPRC: 0.6738280708225922
Sensitivity: 0.026181353767560665
Specificity: 0.9988563586459286
Threshold: 0.0
Accuracy:  0.7423374873694847

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0002.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
Loss: 1.6168909296393394
AUROC: 0.8439211234623429
AUPRC: 0.697648932738057
Sensitivity: 0.02707275803722504
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7143566815697964

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.81it/s]
Loss: 1.5322492164309307
AUROC: 0.833882880024865
AUPRC: 0.678127820908462
Sensitivity: 0.013409961685823755
Specificity: 0.9995425434583715
Threshold: 0.0
Accuracy:  0.7394745705624789

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0003.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.80it/s]
Loss: 1.4112230241298676
AUROC: 0.8438199813898587
AUPRC: 0.6937984618740102
Sensitivity: 0.06598984771573604
Specificity: 0.9957805907172996
Threshold: 0.0
Accuracy:  0.7228017883755589

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.83it/s]
Loss: 1.3326769025735958
AUROC: 0.83384629226507
AUPRC: 0.6745398530849646
Sensitivity: 0.04725415070242656
Specificity: 0.997483989021043
Threshold: 0.0
Accuracy:  0.7468844728864937

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0004.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.80it/s]
Loss: 1.682824656367302
AUROC: 0.8428918541364728
AUPRC: 0.6963371443271099
Sensitivity: 0.030456852791878174
Specificity: 1.0
Threshold: 0.0
Accuracy:  0.7153502235469449

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.75it/s]
Loss: 1.5959413746992748
AUROC: 0.8336071938108408
AUPRC: 0.6765129467625677
Sensitivity: 0.018518518518518517
Specificity: 0.9993138151875571
Threshold: 0.0
Accuracy:  0.7406534186594813

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0005.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.83it/s]
Loss: 1.6697893664240837
AUROC: 0.8428632963748303
AUPRC: 0.6971076085735661
Sensitivity: 0.032148900169204735
Specificity: 0.9992967651195499
Threshold: 0.0
Accuracy:  0.7153502235469449

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.82it/s]
Loss: 1.595503447517272
AUROC: 0.8339755544104536
AUPRC: 0.6765470234754296
Sensitivity: 0.019157088122605363
Specificity: 0.9990850869167429
Threshold: 0.0
Accuracy:  0.7406534186594813

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0006.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.84it/s]
Loss: 1.2926385775208473
AUROC: 0.8394970502212037
AUPRC: 0.6890005598442024
Sensitivity: 0.3164128595600677
Specificity: 0.9655414908579466
Threshold: 0.0
Accuracy:  0.7749627421758569

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.53it/s]
Loss: 1.2234984069101271
AUROC: 0.8302133687146463
AUPRC: 0.6683681319303061
Sensitivity: 0.24010217113665389
Specificity: 0.9810155535224153
Threshold: 0.0
Accuracy:  0.7856180532165712

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0007.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.54it/s]
Loss: 1.4320572949945927
AUROC: 0.8403787711119204
AUPRC: 0.6872210511983247
Sensitivity: 0.08121827411167512
Specificity: 0.9915611814345991
Threshold: 0.0
Accuracy:  0.7242921013412816

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.68it/s]
Loss: 1.371626627060675
AUROC: 0.8314626106688447
AUPRC: 0.6690651623287767
Sensitivity: 0.06960408684546615
Specificity: 0.9972552607502287
Threshold: 0.0
Accuracy:  0.7526103065005052

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0008.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.74it/s]
Loss: 1.6671173013746738
AUROC: 0.8406917165832543
AUPRC: 0.6893592980656171
Sensitivity: 0.030456852791878174
Specificity: 0.9992967651195499
Threshold: 0.0
Accuracy:  0.7148534525583706

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.61it/s]
Loss: 1.5905051439680078
AUROC: 0.8319202132693946
AUPRC: 0.6702978093430528
Sensitivity: 0.019157088122605363
Specificity: 0.9990850869167429
Threshold: 0.0
Accuracy:  0.7406534186594813

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0009.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.35it/s]
Loss: 1.350535586476326
AUROC: 0.8375384637352123
AUPRC: 0.6775655347476236
Sensitivity: 0.16412859560067683
Specificity: 0.9810126582278481
Threshold: 0.0
Accuracy:  0.7411823149528067

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.55it/s]
Loss: 1.2822378655915618
AUROC: 0.8289113994898454
AUPRC: 0.6553092276961763
Sensitivity: 0.14431673052362706
Specificity: 0.9906221408966148
Threshold: 0.0
Accuracy:  0.7674301111485349

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0010.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.55it/s]
Loss: 1.3328465837985277
AUROC: 0.8374884876523379
AUPRC: 0.6790075758073131
Sensitivity: 0.2436548223350254
Specificity: 0.9732770745428974
Threshold: 0.0
Accuracy:  0.7590660705414803

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.56it/s]
Loss: 1.279789715364415
AUROC: 0.829083018722417
AUPRC: 0.6579715302401783
Sensitivity: 0.20242656449553
Specificity: 0.9851326623970723
Threshold: 0.0
Accuracy:  0.7787133715055574

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0011.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.67it/s]
Loss: 1.3636581115424633
AUROC: 0.8368518875490539
AUPRC: 0.6780464708469762
Sensitivity: 0.20304568527918782
Specificity: 0.9767932489451476
Threshold: 0.0
Accuracy:  0.7496274217585693

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.62it/s]
Loss: 1.3106837256621289
AUROC: 0.8283446178455958
AUPRC: 0.6563503955964257
Sensitivity: 0.1685823754789272
Specificity: 0.987419945105215
Threshold: 0.0
Accuracy:  0.771471876052543

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0012.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.50it/s]
Loss: 1.2517575845122337
AUROC: 0.8339032986594511
AUPRC: 0.6666085192382352
Sensitivity: 0.38747884940778343
Specificity: 0.940225035161744
Threshold: 0.0
Accuracy:  0.7779433681073026

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.65it/s]
Loss: 1.2083589085327682
AUROC: 0.8252381636771327
AUPRC: 0.6453753394056378
Sensitivity: 0.3243933588761175
Specificity: 0.9606587374199451
Threshold: 0.0
Accuracy:  0.7928595486695857

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0013.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.30it/s]
Loss: 1.178162794560194
AUROC: 0.8324171051472985
AUPRC: 0.660594573216441
Sensitivity: 0.5194585448392555
Specificity: 0.8980309423347398
Threshold: 0.0
Accuracy:  0.7868852459016393

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.54it/s]
Loss: 1.136761588114564
AUROC: 0.8238209539633965
AUPRC: 0.6397094726198259
Sensitivity: 0.4776500638569604
Specificity: 0.9197163769441903
Threshold: 0.0
Accuracy:  0.8031323678006063

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0014.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.64it/s]
Loss: 1.253557488322258
AUROC: 0.8338223850014634
AUPRC: 0.6610792496891803
Sensitivity: 0.377326565143824
Specificity: 0.9409282700421941
Threshold: 0.0
Accuracy:  0.7754595131644312

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.66it/s]
Loss: 1.2149887485529787
AUROC: 0.8257095688457489
AUPRC: 0.6422312826020078
Sensitivity: 0.3167305236270754
Specificity: 0.962259835315645
Threshold: 0.0
Accuracy:  0.792017514314584

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0015.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.65it/s]
Loss: 1.297668058425188
AUROC: 0.8344720740788336
AUPRC: 0.6600500702650749
Sensitivity: 0.3147208121827411
Specificity: 0.9521800281293952
Threshold: 0.0
Accuracy:  0.7650273224043715

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.68it/s]
Loss: 1.2583869147685267
AUROC: 0.8255425504691996
AUPRC: 0.6408132287820899
Sensitivity: 0.24840357598978288
Specificity: 0.9720951509606587
Threshold: 0.0
Accuracy:  0.7812394745705625

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0016.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.76it/s]
Loss: 1.2478416562080383
AUROC: 0.835360934409961
AUPRC: 0.6613655466229689
Sensitivity: 0.4077834179357022
Specificity: 0.9353023909985936
Threshold: 0.0
Accuracy:  0.7804272230501739

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.73it/s]
Loss: 1.2157346003799028
AUROC: 0.825890024643061
AUPRC: 0.6427905304646993
Sensitivity: 0.34610472541507026
Specificity: 0.9560841720036597
Threshold: 0.0
Accuracy:  0.7952172448635905

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0017.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.54it/s]
Loss: 1.2771084122359753
AUROC: 0.8324789802975243
AUPRC: 0.65012772072203
Sensitivity: 0.3197969543147208
Specificity: 0.9472573839662447
Threshold: 0.0
Accuracy:  0.7630402384500745

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.68it/s]
Loss: 1.2372466594942155
AUROC: 0.8230427520305112
AUPRC: 0.6293467037092159
Sensitivity: 0.27458492975734355
Specificity: 0.9668344007319305
Threshold: 0.0
Accuracy:  0.7842707982485685

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0018.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.77it/s]
Loss: 1.2739253845065832
AUROC: 0.8312034002774863
AUPRC: 0.6487900390969213
Sensitivity: 0.34856175972927245
Specificity: 0.9409282700421941
Threshold: 0.0
Accuracy:  0.7670144063586687

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.65it/s]
Loss: 1.2379455383746856
AUROC: 0.8219921502093316
AUPRC: 0.6275237129793017
Sensitivity: 0.2937420178799489
Specificity: 0.9624885635864593
Threshold: 0.0
Accuracy:  0.7861232738295723

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0019.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.67it/s]
Loss: 1.236969379708171
AUROC: 0.8287629015637755
AUPRC: 0.6385745772702193
Sensitivity: 0.37225042301184436
Specificity: 0.930379746835443
Threshold: 0.0
Accuracy:  0.7665176353700944

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.72it/s]
Loss: 1.2103250616340226
AUROC: 0.8186213293932479
AUPRC: 0.6174364974319329
Sensitivity: 0.32375478927203066
Specificity: 0.9544830741079597
Threshold: 0.0
Accuracy:  0.7881441562815763

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0020.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.78it/s]
Loss: 1.3576315119862556
AUROC: 0.8351979171872508
AUPRC: 0.6585046733067176
Sensitivity: 0.350253807106599
Specificity: 0.9472573839662447
Threshold: 0.0
Accuracy:  0.7719821162444114

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.66it/s]
Loss: 1.3169783058986868
AUROC: 0.8258727896903434
AUPRC: 0.6379193032347705
Sensitivity: 0.2879948914431673
Specificity: 0.9661482159194876
Threshold: 0.0
Accuracy:  0.7873021219265746

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0021.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.60it/s]
Loss: 1.2704709619283676
AUROC: 0.83129740290956
AUPRC: 0.644754089854926
Sensitivity: 0.4128595600676819
Specificity: 0.9261603375527426
Threshold: 0.0
Accuracy:  0.7754595131644312

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.73it/s]
Loss: 1.242494252420241
AUROC: 0.8219002791478105
AUPRC: 0.6243606451865783
Sensitivity: 0.3544061302681992
Specificity: 0.9441903019213175
Threshold: 0.0
Accuracy:  0.7886493768945773

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0022.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.75it/s]
Loss: 1.196653040125966
AUROC: 0.8263628596790583
AUPRC: 0.6281832696296509
Sensitivity: 0.47377326565143824
Specificity: 0.8966244725738397
Threshold: 0.0
Accuracy:  0.7724788872329856

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.52it/s]
Loss: 1.162647932447413
AUROC: 0.8164328555453899
AUPRC: 0.6082557162018605
Sensitivity: 0.43167305236270753
Specificity: 0.9204025617566332
Threshold: 0.0
Accuracy:  0.791512293701583

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0023.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.79it/s]
Loss: 1.1899873837828636
AUROC: 0.8233488259190246
AUPRC: 0.6196333362301771
Sensitivity: 0.49746192893401014
Specificity: 0.8846694796061885
Threshold: 0.0
Accuracy:  0.7709885742672627

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.69it/s]
Loss: 1.1573837514846557
AUROC: 0.8132086048568681
AUPRC: 0.598672164256156
Sensitivity: 0.4591315453384419
Specificity: 0.9064501372369624
Threshold: 0.0
Accuracy:  0.788480970023577

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0024.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.71it/s]
Loss: 1.082600036635995
AUROC: 0.8169459377773971
AUPRC: 0.6104551093265631
Sensitivity: 0.6717428087986463
Specificity: 0.7939521800281294
Threshold: 0.0
Accuracy:  0.7580725285643318

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:21<00:00,  4.26it/s]
Loss: 1.0630460234098538
AUROC: 0.8063137474162178
AUPRC: 0.5889016439559723
Sensitivity: 0.6411238825031929
Specificity: 0.8108417200365965
Threshold: 0.0
Accuracy:  0.7660828561805322

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0025.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.65it/s]
Loss: 1.1864577550441027
AUROC: 0.822392140903996
AUPRC: 0.6202557165240723
Sensitivity: 0.5042301184433164
Specificity: 0.8839662447257384
Threshold: 0.0
Accuracy:  0.7724788872329856

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.49it/s]
Loss: 1.160993145678633
AUROC: 0.8131618660020401
AUPRC: 0.6038801568648209
Sensitivity: 0.4578544061302682
Specificity: 0.9080512351326624
Threshold: 0.0
Accuracy:  0.7893230043785786

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0026.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.77it/s]
Loss: 1.201300323009491
AUROC: 0.8214164173812057
AUPRC: 0.6149247936479516
Sensitivity: 0.5042301184433164
Specificity: 0.879746835443038
Threshold: 0.0
Accuracy:  0.76949826130154

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.75it/s]
Loss: 1.1675009432659353
AUROC: 0.8113967439376785
AUPRC: 0.5970691014710668
Sensitivity: 0.454661558109834
Specificity: 0.9073650503202195
Threshold: 0.0
Accuracy:  0.7879757494105759

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0027.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.78it/s]
Loss: 1.3357632514089346
AUROC: 0.8225682471007922
AUPRC: 0.6142988498775915
Sensitivity: 0.3062605752961083
Specificity: 0.9381153305203939
Threshold: 0.0
Accuracy:  0.7526080476900149

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.72it/s]
Loss: 1.3078210171191924
AUROC: 0.8114795593460765
AUPRC: 0.5994084685583134
Sensitivity: 0.29118773946360155
Specificity: 0.9533394327538883
Threshold: 0.0
Accuracy:  0.7787133715055574

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0028.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.79it/s]
Loss: 1.3038297221064568
AUROC: 0.8232619627273613
AUPRC: 0.6234250315642909
Sensitivity: 0.4077834179357022
Specificity: 0.9177215189873418
Threshold: 0.0
Accuracy:  0.7680079483358172

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.60it/s]
Loss: 1.2689885724616308
AUROC: 0.8148928102788089
AUPRC: 0.6099524425442151
Sensitivity: 0.36590038314176243
Specificity: 0.9377859103385179
Threshold: 0.0
Accuracy:  0.7869653081845739

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0029.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.72it/s]
Loss: 1.1210948750376701
AUROC: 0.8088962187143772
AUPRC: 0.5907938822167478
Sensitivity: 0.6192893401015228
Specificity: 0.8115330520393812
Threshold: 0.0
Accuracy:  0.7550919026328863

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.69it/s]
Loss: 1.0897521549655544
AUROC: 0.7994549665291375
AUPRC: 0.5737752308146578
Sensitivity: 0.5836526181353767
Specificity: 0.8334858188472095
Threshold: 0.0
Accuracy:  0.7675985180195352

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0030.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:07<00:00,  4.50it/s]
Loss: 1.1455209497362375
AUROC: 0.8066342060109327
AUPRC: 0.5880585088796988
Sensitivity: 0.55668358714044
Specificity: 0.8375527426160337
Threshold: 0.0
Accuracy:  0.7550919026328863

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.70it/s]
Loss: 1.1153663739722262
AUROC: 0.7978921360708281
AUPRC: 0.5711182194268997
Sensitivity: 0.5261813537675607
Specificity: 0.8549862763037511
Threshold: 0.0
Accuracy:  0.7682721455035365

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0031.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.77it/s]
Loss: 1.2686444483697414
AUROC: 0.8181941499425275
AUPRC: 0.6126620446726769
Sensitivity: 0.43316412859560066
Specificity: 0.9064697609001406
Threshold: 0.0
Accuracy:  0.767511177347243

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.74it/s]
Loss: 1.2272199350659565
AUROC: 0.8095537724682439
AUPRC: 0.5977047290614109
Sensitivity: 0.39144316730523626
Specificity: 0.92451967063129
Threshold: 0.0
Accuracy:  0.7839339845065678

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0032.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.69it/s]
Loss: 1.2337811421602964
AUROC: 0.8090449570562659
AUPRC: 0.5919860030838302
Sensitivity: 0.4602368866328257
Specificity: 0.8804500703234881
Threshold: 0.0
Accuracy:  0.7570789865871833

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.77it/s]
Loss: 1.1871085987296155
AUROC: 0.8016335813998052
AUPRC: 0.5767737950275407
Sensitivity: 0.4367816091954023
Specificity: 0.9002744739249772
Threshold: 0.0
Accuracy:  0.7780397440215561

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0033.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.80it/s]
Loss: 1.217425785958767
AUROC: 0.7909726535634137
AUPRC: 0.5579213936153583
Sensitivity: 0.4619289340101523
Specificity: 0.8607594936708861
Threshold: 0.0
Accuracy:  0.7436661698956781

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.78it/s]
Loss: 1.175701912372343
AUROC: 0.7823798753007353
AUPRC: 0.5376632112335887
Sensitivity: 0.43039591315453385
Specificity: 0.8796889295516926
Threshold: 0.0
Accuracy:  0.7611990569215223

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0034.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.79it/s]
Loss: 1.1741962302476168
AUROC: 0.7965295180163778
AUPRC: 0.5706627188304692
Sensitivity: 0.5296108291032149
Specificity: 0.8340365682137834
Threshold: 0.0
Accuracy:  0.7446597118728266

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.71it/s]
Loss: 1.1345252984313554
AUROC: 0.7878602251176943
AUPRC: 0.5544148759784869
Sensitivity: 0.5070242656449553
Specificity: 0.8538426349496798
Threshold: 0.0
Accuracy:  0.7623779050185248

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0035.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.76it/s]
Loss: 1.1864649653434753
AUROC: 0.8039390672559085
AUPRC: 0.5857206900114243
Sensitivity: 0.5346869712351946
Specificity: 0.840365682137834
Threshold: 0.0
Accuracy:  0.7506209637357178

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:20<00:00,  4.61it/s]
Loss: 1.143303051110237
AUROC: 0.7956489631569291
AUPRC: 0.5703619475091856
Sensitivity: 0.5146871008939975
Specificity: 0.8611619396157365
Threshold: 0.0
Accuracy:  0.7697878073425396

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0036.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.78it/s]
Loss: 1.0828943066298962
AUROC: 0.8022934262412512
AUPRC: 0.5862518782376256
Sensitivity: 0.6700507614213198
Specificity: 0.7721518987341772
Threshold: 0.0
Accuracy:  0.7421758569299552

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.78it/s]
Loss: 1.0650458361512871
AUROC: 0.7952804564983951
AUPRC: 0.5711355973217216
Sensitivity: 0.644316730523627
Specificity: 0.7946020128087832
Threshold: 0.0
Accuracy:  0.7549680026945099

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0037.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.80it/s]
Loss: 1.2297134324908257
AUROC: 0.8036915666550056
AUPRC: 0.5857317940708128
Sensitivity: 0.494077834179357
Specificity: 0.8621659634317862
Threshold: 0.0
Accuracy:  0.7540983606557377

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.78it/s]
Loss: 1.18377489844958
AUROC: 0.7960682983200887
AUPRC: 0.5705272769125974
Sensitivity: 0.46296296296296297
Specificity: 0.8838060384263495
Threshold: 0.0
Accuracy:  0.7728191310205457

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0038.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.73it/s]
Loss: 1.1576789319515228
AUROC: 0.8049124109652286
AUPRC: 0.5911777323026471
Sensitivity: 0.571912013536379
Specificity: 0.8396624472573839
Threshold: 0.0
Accuracy:  0.7610531544957775

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.74it/s]
Loss: 1.132715263674336
AUROC: 0.7952343018792526
AUPRC: 0.57200137279995
Sensitivity: 0.5434227330779055
Specificity: 0.8533851784080513
Threshold: 0.0
Accuracy:  0.7716402829235433

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0039.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.75it/s]
Loss: 1.1793940290808678
AUROC: 0.8022398804381713
AUPRC: 0.5871317956856594
Sensitivity: 0.5380710659898477
Specificity: 0.8459915611814346
Threshold: 0.0
Accuracy:  0.7555886736214605

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.78it/s]
Loss: 1.1460433442105529
AUROC: 0.7935154804929547
AUPRC: 0.56864814964108
Sensitivity: 0.5146871008939975
Specificity: 0.8613906678865508
Threshold: 0.0
Accuracy:  0.7699562142135399

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0040.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.80it/s]
Loss: 1.1296936944127083
AUROC: 0.7986975280877485
AUPRC: 0.5828301560830534
Sensitivity: 0.6209813874788495
Specificity: 0.79957805907173
Threshold: 0.0
Accuracy:  0.7471435668156979

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.77it/s]
Loss: 1.1000218577282403
AUROC: 0.7891988551317509
AUPRC: 0.5631771324486319
Sensitivity: 0.5925925925925926
Specificity: 0.8218206770356816
Threshold: 0.0
Accuracy:  0.7613674637925227

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0041.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.69it/s]
Loss: 1.2359654121100903
AUROC: 0.7970637861404424
AUPRC: 0.5760468223405296
Sensitivity: 0.4686971235194585
Specificity: 0.8677918424753868
Threshold: 0.0
Accuracy:  0.7506209637357178

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.73it/s]
Loss: 1.2099024201593092
AUROC: 0.7870168809058926
AUPRC: 0.5565037036236139
Sensitivity: 0.44316730523627074
Specificity: 0.8849496797804208
Threshold: 0.0
Accuracy:  0.7684405523745369

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0042.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.69it/s]
Loss: 1.1693869829177856
AUROC: 0.7852230242193616
AUPRC: 0.5627994462115727
Sensitivity: 0.6006768189509306
Specificity: 0.8045007032348804
Threshold: 0.0
Accuracy:  0.7446597118728266

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.77it/s]
Loss: 1.1264099792767597
AUROC: 0.7784606762644906
AUPRC: 0.5436870449519055
Sensitivity: 0.5696040868454662
Specificity: 0.8186184812442818
Threshold: 0.0
Accuracy:  0.7529471202425059

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0043.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.79it/s]
Loss: 1.215945977717638
AUROC: 0.7977658311141572
AUPRC: 0.5802917854940238
Sensitivity: 0.5143824027072758
Specificity: 0.8530239099859352
Threshold: 0.0
Accuracy:  0.7536015896671634

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.73it/s]
Loss: 1.1842516497258218
AUROC: 0.7889921817580586
AUPRC: 0.5626244530143969
Sensitivity: 0.4859514687100894
Specificity: 0.8696248856358646
Threshold: 0.0
Accuracy:  0.7684405523745369

Intermediate Model:
  ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0044.model
AUROC/AUPRC on Validation Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:06<00:00,  4.79it/s]
Loss: 1.1467695850878954
AUROC: 0.7942675053129336
AUPRC: 0.5786424301774546
Sensitivity: 0.6091370558375635
Specificity: 0.8016877637130801
Threshold: 0.0
Accuracy:  0.7451564828614009

AUROC/AUPRC on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.78it/s]
Loss: 1.1118094972384873
AUROC: 0.7884633024038961
AUPRC: 0.5635417436861095
Sensitivity: 0.590676883780332
Specificity: 0.8195333943275389
Threshold: 0.0
Accuracy:  0.7591781744695184


Plot AUROC/AUPRC for Each Intermediate Model
  Epoch with best Validation Loss:      24, 1.075
  Epoch with best model Test AUROC:      5, 0.834
  Epoch with best model Test Accuracy:  13, 0.8031

AUROC/AUPRC Plots - Best Model Based on Validation Loss
  Epoch with best Validation Loss:   24, 1.075
  Best Model Based on Validation Loss:
    ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0024.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.77it/s]
Loss: 1.0630460234098538
AUROC: 0.8063137474162178
AUPRC: 0.5889016439559723
Sensitivity: 0.6411238825031929
Specificity: 0.8108417200365965
Threshold: 0.0
Accuracy:  0.7660828561805322
<Figure size 640x480 with 0 Axes>
best_model_val_test_auroc: 0.8063137474162178
best_model_val_test_auprc: 0.5889016439559723

AUROC/AUPRC Plots - Best Model Based on Model AUROC
  Epoch with best model Test AUROC:   5, 0.834
  Best Model Based on Model AUROC:
    ./vitaldb_cache/models/ABP_12_RESIDUAL_BLOCKS_64_BATCH_SIZE_1e-04_LEARNING_RATE_003_MINS__ALL_MAX_CASES_9b76f73b_0005.model

Generate Stats Based on Test Data
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 93/93 [00:19<00:00,  4.76it/s]
Loss: 1.595503447517272
AUROC: 0.8339755544104536
AUPRC: 0.6765470234754296
Sensitivity: 0.019157088122605363
Specificity: 0.9990850869167429
Threshold: 0.0
Accuracy:  0.7406534186594813
best_model_auroc_test_auroc: 0.8339755544104536
best_model_auroc_test_auprc: 0.6765470234754296

Total Processing Time: 3734.0100 sec

Results (Planned results for Draft submission)¶

When we complete our experiments, we will build comparison tables that compare a set of measures for each experiment performed. The full set of experiments and measures are listed below.

Results from Final Rubrik¶

  • Table of results (no need to include additional experiments, but main reproducibility result should be included)
  • All claims should be supported by experiment results
  • Discuss with respect to the hypothesis and results from the original paper
  • Experiments beyond the original paper
    • Each experiment should include results and a discussion
  • Ablation Study.

Experiments¶

  • ABP only
  • ECG only
  • EEG only
  • ABP + ECG
  • ABP + EEG
  • ECG + EEG
  • ABP + ECG + EEG

Note: each experiment will be repeated with the following time-to-IOH-event durations:

  • 3 minutes
  • 5 minutes
  • 10 minutes
  • 15 minutes

Note: the above list of experiments will be performed if there is sufficient time and gpu capability to complete that before the submission deadline. Should we experience any constraints on this front, we will reduce our experimental coverage to the following 4 core experiments that are necessary to measure the hypotheses included at the head of this report:

  • ABP only @ 3 minutes
  • ABP + ECG @ 3 minutes
  • ABP + EEG @ 3 minutes
  • ABP + ECG + EEG @ 3 minutes

For additional details please review the "Planned Actions" in the Discussion section of this report.

Measures¶

  • AUROC
  • AUPRC
  • Sensitivity
  • Specificity
  • Threshold
  • Loss Shrinkage

[ TODO for final report - collect data for all measures listed above. ]

[ TODO for final report - generate ROC and PRC plots for each experiment ]

We are collecting a broad set of measures across each experiment in order to perform a comprehensive comparison of all measures listed across all comparable experiments executed in the original paper. However, our key experimental results will be focused on a subset of these results that address the main experiments defined at the beginning of this notebook.

The key experimental result measures will be as follows:

  • For 3 minutes ahead of the predicted IOH event:
    • compare AUROC and AUPRC for ABP only vs ABP+ECG
    • compare AUROC and AUPRC for ABP only vs ABP+EEG
    • compare AUROC and AUPRC for ABP only vs ABP+ECG+EEG

Model comparison¶

The following table is Table 3 from the original paper which presents the measured values for each signal combination across each of the four temporal predictive categories:

Area under the Receiver-operating Characteristic Curve, Area under the Precision-Recall Curve, Sensitivity, and Specificity of the model in predicting intraoperative hypotension

We have not yet completed the execution of the experiments necessary to determine our reproduced model performance in order determine whether our results are accurately representing those of the original paper. These details are expected to be included in the final report.

As of the draft submission, the reported evaluation measures of our model are too good to be true (all measures are 1.0). We suspect that there is data leakage in the dataset splitting process and will address this in time for the final report.

Discussion¶

Discussion (10) FROM FINAL RUBRIK¶

  • Implications of the experimental results, whether the original paper was reproducible, and if it wasn’t, what factors made it irreproducible
  • “What was easy”
  • “What was difficult”
  • Recommendations to the original authors or others who work in this area for improving reproducibility
  • (specific to our group) "I have communicated with Maciej during OH. The draft looks good and I would expect some explanations/analysis on the final report on why you get 1.0 as AUROC."
    • discuss our bug where we were believing we were sampling dozens of different patient samples but were just training the model on the same segments extracted from the same patient sample over and over. so we were massively overfitting our training data for one patient's data, then unwittingly using the same patient data for validation and testing, thus getting perfect classification during inference.

Feasibility of reproduction¶

Our assessment is that this paper will be reproducible. The outstanding risk is that each experiment can take up to 7 hours to run on hardware within the team (i.e., 7h to run ~70 epochs on a desktop with AMD Ryzen 7 3800X 8-core CPU w/ RTX 2070 SUPER GPU and 32GB RAM). There are a total of 28 experiments (7 different combinations of signal inputs, 4 different time horizons for each combination). Should our team find it not possible to complete the necessary experiments across all of the experiments represented in Table 3 of our selected paper, we will reduce the number of experiments to focus solely on the ones directly related to our hypotheses described in the beginning of this notebook (i.e., reduce the number of combinations of interest to 4: ABP alone, ABP+EEG, ABP+ECG, ABP+ECG+EEG). This will result in a new total of 16 experiments to run.

Planned ablations¶

Our proposal included a collection of potential ablations to be investigated:

  • Remove ResNet skip connection
  • Reduce # of residual blocks from 12 to 6
  • Reduce # of residual blocks from 12 to 1
  • Eliminate dropout from residual block
  • Max pooling configuration
    • smaller size/stride
    • eliminate max pooling

Given the amount of time required to conduct each experiment, our team intends to choose only a small number of ablations from this set. Further, we only intend to perform ablation analysis against the best performing signal combination and time horizon from the reproduction experiments. In order words, we intend to perform ablation analysis against the following training combinations, and only against the models trained with data measured 3 minutes prior to an IOH event:

  • ABP alone
  • ABP + ECG
  • ABP + EEG
  • ABP + ECG + EEG

Time and GPU resource permitting, we will complete a broader range of experiments. For additional details, please see the section below titled "Plans for next phase".

Nature of reproduced results¶

Our team intends to address the manner in which the experimental results align with the published results in the paper in the final submission of this report. The amount of time required to complete model training and result analysis during the preparation of the Draft notebook was not sufficient to complete a large number of experiments.

What was easy? What was difficult?¶

The difficult aspect of the preparation of this draft involved the data preprocessing.

  • First, the source data is unlabelled, so our team was responsible for implementing analysis methods for identifying positive (IOH event occurred) and negative (IOH event did not occur) by running a lookahead analysis of our input training set.
  • Second, the volume of raw data is in excess of 90GB. A non-trivial amount of compute was required to minify the input data to only include the data tracks of interest to our experiments (i.e., ABP, ECG, and EEG tracks).
  • Third, our team found it difficult to trace back to the definition of the jSQI signal quality index referenced in the paper. Multiple references through multiple papers needed to be traversed to understand which variant of the quality index
    • The only available source code related to the signal quality index as referenced by our paper in [5]. Source code was not directly linked from the paper, but the GitHub repository for the corresponding author for reference [5] did result in the identification of MATLAB source code for the signal quality index as described in the referenced paper. That code is available here: https://github.com/cliffordlab/PhysioNet-Cardiovascular-Signal-Toolbox/tree/master/Tools/BP_Tools
    • Our team had insufficient time to port this signal quality index to Python for use in our investigation, or to setup a MATLAB environment in which to assess our source data using the above MATLAB functions, but we expect to complete this as part of our final report.

Suggestions to paper author¶

The most notable suggestion would be to correct the hyperparameters published in Supplemental Table 1. Specifically, the output size for residual blocks 11 and 12 for the ECG and ABP data sets was 496x6. This is a typo, and should read 469x6. This typo became apparent when operating the size down operation within Residual Block 11 and recognizing the tensor dimensions were misaligned.

Additionally, more explicit references to the signal quality index assessment tools should be added. Our team could not find a reference to the MATLAB source code as described in reference [3], and had to manually discover the GitHub profile for the lab of the corresponding author of reference [3] in order to find MATLAB source that corresponded to the metrics described therein.

Plans for next phase¶

Our team plans to accomplish the following goals in service of preparing the Final Report:

  • Implement the jSQI filter to remove any training data with aberrent signal quality per the threshold defined in our original paper.
  • Execute the following experiments:
    • Measure predictive quality of the model trained solely with ABP data at 3 minutes prior to IOH events.
    • Measure predictive quality of the model trained with ABP+ECG data at 3 minutes prior to IOH events.
    • Measure predictive quality of the model trained with ABP+EEG data at 3 minutes prior to IOH events.
    • Measure predictive quality of the model trained with ABP+ECG+EEG data at 3 minutes prior to IOH events.
  • Gather our measures for these experiments and perform a comparison against the published results from our selected paper and determine whether or not we are succesfully reproducing the results outlined in the paper.
  • Ablation analysis:
    • Execute the following ablation experiments:
      • Repeat the four experiments described above while reducing the numnber of residual blocks in the model from 12 to 6.
  • Time- and/or GPU-resource permitting, we will complete the remaining 24 experiments as described in the paper:
    • Measure predictive quality of the model trained solely with ABP data at 5, 10, and 15 minutes prior to IOH events.
    • Measure predictive quality of the model trained with ABP+ECG data at 5, 10, and 15 minutes prior to IOH events.
    • Measure predictive quality of the model trained with ABP+EEG data at 5, 10, and 15 minutes prior to IOH events.
    • Measure predictive quality of the model trained with ABP+ECG+EEG data at 5, 10, and 15 minutes prior to IOH events.
    • Measure predictive quality of the model trained solely with ECG data at 3, 5, 10, and 15 minutes prior to IOH events.
    • Measure predictive quality of the model trained solely with EEG data at 3, 5, 10, and 15 minutes prior to IOH events.
    • Measure predictive quality of the model trained with ECG+EEG data at 3, 5, 10, and 15 minutes prior to IOH events.
    • Additional ablation experiments:
      • For the four core experiments (ABP, ABP+ECG, ABP+EEG, ABP+ECG+EEG each trained on event data occurring 3 minutes prior to IOH events), perform the following ablations:
        • Repeat experiment while eliminating dropout from every residual block
        • Repeat experiment while removing the skip connection from every residual block
        • Repeat the four experiments described above while reducing the numnber of residual blocks in the model from 12 to 1.

References¶

  1. Jo Y-Y, Jang J-H, Kwon J-m, Lee H-C, Jung C-W, Byun S, et al. “Predicting intraoperative hypotension using deep learning with waveforms of arterial blood pressure, electroencephalogram, and electrocardiogram: Retrospective study.” PLoS ONE, (2022) 17(8): e0272055 https://doi.org/10.1371/journal.pone.0272055
  2. Hatib, Feras, Zhongping J, Buddi S, Lee C, Settels J, Sibert K, Rhinehart J, Cannesson M “Machine-learning Algorithm to Predict Hypotension Based on High-fidelity Arterial Pressure Waveform Analysis” Anesthesiology (2018) 129:4 https://doi.org/10.1097/ALN.0000000000002300
  3. Bao, X., Kumar, S.S., Shah, N.J. et al. "AcumenTM hypotension prediction index guidance for prevention and treatment of hypotension in noncardiac surgery: a prospective, single-arm, multicenter trial." Perioperative Medicine (2024) 13:13 https://doi.org/10.1186/s13741-024-00369-9
  4. Lee, HC., Park, Y., Yoon, S.B. et al. VitalDB, a high-fidelity multi-parameter vital signs database in surgical patients. Sci Data 9, 279 (2022). https://doi.org/10.1038/s41597-022-01411-5
  5. Li Q., Mark R.G. & Clifford G.D. "Artificial arterial blood pressure artifact models and an evaluation of a robust blood pressure and heart rate estimator." BioMed Eng OnLine. (2009) 8:13. pmid:19586547 https://doi.org/10.1186/1475-925X-8-13
  6. Park H-J, "VitalDB Python Example Notebooks" GitHub Repository https://github.com/vitaldb/examples/blob/master/hypotension_art.ipynb

Public GitHub Repo (5)¶

  • Publish your code in a public repository on GitHub and attach the URL in the notebook.
  • Make sure your code is documented properly.
    • A README.md file describing the exact steps to run your code is required.
    • Check “ML Code Completeness Checklist” (https://github.com/paperswithcode/releasing-research-code)
    • Check “Best Practices for Reproducibility” (https://www.cs.mcgill.ca/~ksinha4/practices_for_reproducibility/)

Video Presentation (Requirements from Rubrik)¶

Walkthrough of the notebook, no need to make slides. We expect a well-timed, well-presented presentation. You should clearly explain what the original paper is about (what the general problem is, what the specific approach taken was, and what the results claimed were) and what you encountered when you attempted to reproduce the results. You should use the time given to you and not too much (or too little).

  • <= 4 mins
  • Explain the general problem clearly
  • Explain the specific approach taken in the paper clearly
  • Explain reproduction attempts clearly
In [115]:
print(f'All done!')
All done!